iphone - UIViewController 在应用程序委托(delegate)中手动实例化

标签 iphone objective-c xcode uiviewcontroller instantiation

我刚刚开始 iPhone 开发(来自 .Net 世界),并且已经浏览了许多“Hello World”应用程序来掌握这个新开发平台的窍门。我一直困惑的一个领域是 View Controller 的实例化。在 Apple“Hello World”教程中,他们首先创建一个基于窗口的应用程序,默认情况下没有 View Controller 。然后,他们创建一个 UIViewController 并在应用程序委托(delegate)中手动实例化该 Controller ,然后简单地将 View Controller 添加到窗口 ( http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhone101/Articles/03_AddingViewController.html#//apple_ref/doc/uid/TP40007514-CH5-SW5 )。

相反,如果我要创建一个新的“基于 View 的应用程序”项目并查看委托(delegate)实现,则将该 View Controller 链接到主窗口所做的所有操作就是以下行: [窗口addSubview:viewController.view];

当预构建的“基于 View 的应用程序”模板只是将 View Controller View 添加到窗口时,为什么教程指示我必须通过 alloc/init 手动实例化 View Controller ?两者有什么区别?

最佳答案

通过进一步挖掘,我找到了自己问题的答案。当您创建基于 View 的应用程序时,您会注意到,如果双击 MainWindow.xib,文档窗口中的对象之一是 View Controller ,它已经连接到 [ProjectName]ViewController 类(该类当您选择基于 View 的应用程序时会自动创建)。

因此,通过将 View Controller 从库拖入 MainWindow.xib 中的文档窗口,您实际上是在实例化该对象(尽管它已存档在 nib 文件中)。因此,无需在应用程序委托(delegate)中手动实例化它。只需将该 View Controller 的 View 添加到窗口即可完成。

关于iphone - UIViewController 在应用程序委托(delegate)中手动实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1264365/

相关文章:

iphone - 如何在核心数据迁移映射中拆分实体

iPhone开发: How to create colored or translucent background for UIActionSheet?

iphone - 调试基本 OpenGL 纹理失败? (iPhone)

iphone - 缺少 Assets 目录编译器选项

iphone - 使用 Time Profiler 分析的审查方法

iphone - 带有自定义单元格的 TableView

objective-c - Xcode 的第一步 - TableView 问题

objective-c - 在 iOS7 的编辑模式下,UITableViewCell 内容与删除按钮重叠

iphone - 如何阻止我的 swift 应用程序在模拟器中崩溃

iPhone - 归档自定义对象数组