我已阅读Apple的“您的第一个iOS应用程序”指南,所有内容对我来说似乎都很清楚。但是,当我尝试了解XCode中提供的基于View的iOS应用程序模板的工作原理时,我遇到了一些有趣的难题。基于视图的iOS应用程序模板
据我所知,应用程序从主要的nib文件名(通常是MainWindow.xib)形成* -Info.plist文件。我不明白的是,默认情况下,XCode如何知道哪个nib文件与使用此基于View的应用程序模板创建的控制器相关联。在指南中,你开始与基于Windows的应用程序,你“必须写”是这样的:
MyViewController *aViewController = [[MyViewController alloc]
initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]];
[self setMyViewController:aViewController];
这是非常合情合理的。但是,事实证明,在基于视图的iOS应用程序模板中没有这样的事情,并且这个nib规范并不是首先需要的,只要您创建了UIViewController子类并使用选项“With XIB for user interface “检查。我的问题是,XCode是如何知道哪个nib与这个控制器相关联的,也就是说它是将这个连接存储在一些文件中,还是通过某种约定(可能与控制器和nib文件同名)?此外,从'MyViewBasedAppController''的字幕加载来自哪里MainWindow.xib中的控制器的接口生成器的视图?当我手动添加控制器时,肯定不会出现这种情况,所以我很好奇XCode在我背后做了什么魔术,当时我认为我只是选择了一个简单的代码模板。
整个过程的优秀解释,竖起大拇指。 – 2010-11-15 03:29:19
嗯,你完全正确地从他们的名字实例化类,但那不是我所问的。你在这里说的:“这样做会打开另一个xib并继续执行相同的步骤。”似乎没有回答我的问题:如何解决NibTestViewController控制器的nib文件是非常NibTestViewController.xib文件?换言之,如何知道在这种情况下甚至应该有用于加载的nib文件(因为我们可以清楚地实例化没有nib文件的控制器)? – itim 2010-11-15 06:56:14
“...查看其属性(检查器中的第一个选项卡,带有滑块图形),您还会看到单独的nib文件被指定为包含其主要细节。” - 对不起,我真的很累读这个。这个答案实际上是指甲,非常感谢你! – itim 2010-11-15 09:21:56