我正在关注如何使用Zdziarsky的“iPhone SDK应用程序开发”第2章中的Interface Builder教程。这个想法似乎是创建一个非常基本的应用程序,它包含一个标签栏控制器,它有两个按钮,每个按钮绑定到一个不同的视图对象(以及每个视图对象在各自的.xib文件中)。我最终得到的是一个空白窗口和一些代码,这些代码与本书所指出的内容有很大不同。
我怀疑是一个缺失的步骤,但是指示的步骤分散在解释的一章中,所以我不是100%确定我没有错过任何东西。以下是步骤的总结:
此时,本书说如果我查看ExampleAppDelegate.h,我应该在代码中看到Interface Builder对象的链接,例如:
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet RootViewController *viewController;
但是当我实际查看文件时,我只看到上面的第一行(UIWindow)。 RootViewController行不存在。
同样,本书说当我查看ExampleAppDelegate.m时,我应该看到一些综合指令:
@synthesize window;
@synthesize viewController;
但是,我只看到与窗口相关的线条。
果然,如果我点击“Build and Go”,我在模拟器中看到的是一个空窗口。
在完成此过程时我注意到的一件事是,我没有被指示将Tab Bar Controller从步骤2b直接拖动到界面构建器中显示的Window对象中。无论如何我试图这样做,发现我不被允许(事实上,任何类型的视图控制器似乎都没有直接在窗口中受欢迎)。这对我来说似乎很奇怪 - 我注意到直接将View对象拖到Window中似乎没问题。但由于视图不能包含视图控制器,我无法看到你应该如何在窗口中包含的层次结构中添加视图控制器。
我在这里缺少哪些步骤和/或知识?
答案 0 :(得分:1)
窗口和 viewController 出口作为项目模板的一部分添加,因此XCode的模板可能在编写教程时发生了变化。 XCode现在有标签栏,导航和基于视图的应用程序的单独模板,所以你应该看一下。
使用基于Window的普通应用模板,您需要在AppDelegate头文件中添加rootViewController插座,并将其连接到IB中的视图控制器实例。您的应用代表还需要代码将主视图添加到窗口中:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Add the tab bar controller's current view as a subview of the window
[window addSubview:rootViewController.view];
}
这就是您的主视图控制器与应用程序窗口的关系。没有该代码,您将只看到一个空窗口。
答案 1 :(得分:0)
如果它不存在,那就把它写进来 - 它没有任何魔力。但是,如果你想让IB自动跟上这个,我相信你缺少的步骤是文件 - >写类文件;虽然合并时有点不清楚,但我会尝试理解应该在哪里,而不是完全依赖它。