现在读者已经完成了视图对象和控制器对象的创建、设置和关联,也在模型对象中存储了问题和答案。剩下的两项工作是:
•在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应用已经全部开发好了,读者可以体验一下自己开发的应用了。