行书书法钢笔:Ipad开发课程-Charpter4 窗口控制器 ? 疯狂的老九

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 18:13:30

Ipad开发课程-Charpter4 窗口控制器

到目前位置,我们建立的应用程序都是单窗口的,也就是用到了一个视窗控制器。在前面,我们用View-basedApplication建立的程序在iPhoneSDK中会默认给我们建立一个视窗,一般这个窗口的名字为ViewController.

在现实中,你经常需要超过1个视窗的程序用于显示不同的信息。这章节我们将创建不同类型的项目来熟悉不同类型的视窗控制器的租用。我们将学习怎么样创建多窗口应用以及各窗口之间的程序转换。

View-Based Application

创建一个View-based Application项目,代码下载:viewBasedApp.rar

1.Xcode,创建一个View-based Application项目,取名:viewBasedApp

2.Ctrl+R,我们可以看到一个空白的屏幕。废话!但是这里我们要将这个程序的原理,就不是废话了!呵呵

它是怎么运行的呢?

我们以View-based Application建立项目的时候,会默认的分配一个视窗给我们羡慕,就是View窗口,它的控制是通过View Contoller 类来完成的。我们来详细了解一下:

首先,我们看看在Xcode里面左侧我们所创建项目的文件和文件列表。在项目名称下面有类和资源的文件夹列表:

viewBasedApp.app The application bundle (executable), which containsthe executable as well as the data that is bundledwith the application.viewBasedApp_Prefix.pch Contains the prefix header for all files in the project.The prefix header is included by default in the other filesin the project.viewBasedAppAppDelegate.h Headers file for the application delegate.viewBasedAppAppDelegate.m Implementations file for the application delegate.viewBasedAppViewController.h Headers file for a View Controller.viewBasedAppViewController.m Implementations file for a View Controller.viewBasedAppViewController.xib The Xib file containing the Ui of a view.CoreGraphics.framework C-based Apis for low-level 2D rendering.Foundation.framework APIs for foundational system services such as data types,xml, urL, and so on.UIKit.framework Provides fundamental objects for constructing andmanaging your application’s ui.viewBasedApp-Info.plist A dictionary file that contains information about yourproject, such as icon, application name, and others;information is stored in key/value pairs.main.m The main file that bootstraps your iPad application.MainWindow.xib The xib file for the main window of the application.

 

 

我们可以看到,默认被创建的文件和文件夹还有很多。为了让我们更便捷的开发iPad应用程序,iPhoneSDK会将常用的资源默认创建。下表是一些常用的文件:

 

viewBasedApp.app 应用程序的管理束,包含执行程序、数据绑定和应用。

viewBasedApp_Prefix.pch 包含这个项目中所有文件头文件前缀

viewBasedAppAppDelegate.h 应用指令的头文件集

viewBasedAppAppDelegate.m 应用指令的执行文件集

viewBasedAppViewController.h 窗口控制的头文件集

viewBasedAppViewController.m 窗口指令的执行文件集

viewBasedAppViewController.xib xib文件包含了窗口文件的UI控制

CoreGraphics.framework C-based Api的低级2D渲染

Foundation.framework 提供基础系统服务API接口,例如:数据、XML,URL等等

UIKit.framework 为你的应用程序提供构建和管理的基本UI

viewBasedApp-Info.plist 字典文件,包含了项目中所有信息,比如图标,名称,等等.此文件向iPhone系统描述应用程序,并支持你指定其可执行文件、应用程序标识符和其它关键特性。

main.m 这个不用解释了吧,学过C的都知道。

MainWindow.xib 应用程序主窗口Xib文件未被填充的窗口。

在main.m文件中,包含代码用于应用程序的引导:

 

#import

int main(int argc, char *argv[]) {

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

int retVal = UIApplicationMain(argc, argv, nil, nil);

[pool release];

return retVal;

}

 

 

其中UIApplicationMain()函数是最主要的部分,它负责检查viewBasedApp-Info.plist来获得关于这个项目的更多的信息。它相当于项目主函数NIB文件。下图中我们可以看到viewBasedApp-Info.plist所包含的文件。注意到Main nibfile base name关键值指向了MainWindow。程序开始的时候NIB文件就直接被读取出来。

XIB和NIB是什么?

iPad应用开发中,我们会一直和.xib打交到(有些时候是NIB文件)。要说到这两个文件的历史,我们就要提一下Mac osX操作系统。Mac OSX操作系统的基础是一个叫NeXTSTEP东东。这个东东来自一个叫NeXT的公司,这个公司的老板就是乔布斯,他在被苹果下岗后建立的公司。NIB中的N就是代表NeXT公司的NeXTSTEP,而xib中的x代表XML语言。这个IB就是InterfaceBuilder的简写,用视窗方式构建应用程序。

编辑XIB文件

双击MainWindow.xib文件,正如所讲的xib文件可以用视窗模式来构建程序。xib文件实际上是一个xml文件,你能通过文字编辑器浏览和编辑xib文件。但是选用视窗是比较明智的选择,这样条理更清晰更快捷。

用视窗编辑器打开MinWindow.xib文件,我们可以看到和文件名称一样的一个窗口

这个窗口包含5个部分:

Files's Owner 用于将项目调用到用户界面(也就是说用于管理项目做包含的XIB文件)在动态load nib文件的时候会用到,如果是独立的应用程序,启动就加载Nib的话,file‘s owner就是一个站位符了

First Responder 用来响应菜单事件,也可以用来控制在界面上那个control具有初始焦点

viewBasedApp App Delegate 指向viewBasedAppAppDelegate类。当你选择viewBasedApp App Delegate 你可以看到Identity Inspector窗口。

ViewBased App View Controller指向一个视图控制窗口,你能用来显示你的UI。在这个例子中,它指向viewBasedAppViewController类,当你选择它的时候,我们讷讷感看到它的Identity Inspector窗口