首页 » iOS编程(第4版) » iOS编程(第4版)全文在线阅读

《iOS编程(第4版)》1.8 大功告成

关灯直达底部

现在读者已经完成了视图对象和控制器对象的创建、设置和关联,也在模型对象中存储了问题和答案。剩下的两项工作是:

•在BNRQuizViewController中实现showQuestion:和showAnswer:动作方法。

•在BNRAppDelegate中创建和显示BNRQuizViewController对象。

实现动作方法

在BNRQuizViewController.m文件中为showQuestion:和showAnswer:添加以下代码:

...

// 返回新对象的地址

return self;

}

- (IBAction)showQuestion:(id)sender

{

// 进入下一个问题

self.currentQuestionIndex++;

// 是否已经回答完了所有问题?

if (self.currentQuestionIndex == [self.questions count]) {

// 回到第一个问题

self.currentQuestionIndex = 0;

}

// 根据正在回答的问题序号从数组中取出问题字符串

NSString *question = self.questions[self.currentQuestionIndex];

// 将问题字符串显示在标签上

self.questionLabel.text = question;

// 重置答案字符串

self.answerLabel.text = @"???";

}

- (IBAction)showAnswer:(id)sender

{

// 当前问题的答案是什么?

NSString *answer = self.answers[self.currentQuestionIndex];

// 在答案标签上显示相应的答案

self.answerLabel.text = answer;

}

@end

在屏幕上显示视图控制器

如果现在运行Quiz应用,读者将只能看到一个空白的屏幕,无法看到在BNRQuizViewController.xib文件中创建的用户界面。为了在屏幕上显示用户界面,必须将视图控制器和应用中的另一个控制器关联——BNRAppDelegate。

使用Xcode开发iOS应用时,所有应用模板都会自动帮读者创建一个应用程序委托(app delegate)。应用程序委托是每一个iOS应用都必须具备的启动入口。

应用程序委托负责管理应用的UIWindow对象。UIWindow对象表示应用唯一的主窗口。为了在屏幕上显示BNRQuizViewController,需要将它设置为UIWindow对象的根视图控制器(root view controller)。

ios应用启动完毕后,为了向用户显示界面,系统会做一些额外工作。在用户看到应用界面之前,应用程序委托会收到一条消息:application:didFinishLaunchingWithOptions:,可以在这条消息中添加应用的初始化代码。初始化代码通常用来确保在用户看到界面时,应用已经处于正确的设置。

在项目导航面板中选择BNRAppDelegate.m文件。在application:didFinish- LaunchingWithOptions:方法中创建BNRQuizViewController对象,并将它设置为UIWindow对象的根视图控制器。请读者添加以下代码:

#import "BNRAppDelegate.h"

#import "BNRQuizViewController.h"

- (BOOL)application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];

// 在这里添加应用启动后的初始化代码

BNRQuizViewController *quizVC = [[BNRQuizViewController alloc] init];

self.window.rootViewController = quizVC;

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

现在,应用启动完毕后会创建BNRQuizViewController对象,并通过init方法初始化该对象,加载由BNRQuizViewController.xib文件编译而来的NIB文件(init方法是通过initWithNibName:bundle:方法加载NIB文件的,本书6.4节会介绍此过程),然后将它设置为UIWindow对象的根视图控制器。

Quiz应用已经全部开发好了,读者可以体验一下自己开发的应用了。