iphone - awakeFromNib 不是调用而是显示 xib

标签 iphone objective-c ios nib awakefromnib

我在 xcode 4.5 中创建了一个新项目,并调用了我的 viewcontroller

-(id)initWithNibName:bundle:

来自 appdelegate,因为它在默认项目模板中调用,我没有使用 Storyboard 但没有调用 awakeFromNib 我也进行了搜索,但无法理解为什么 awakeFromNib 没有调用。

通过 -(void)awakeFromNib 的苹果文档 “在从 Interface Builder 存档或 nib 文件加载接收器后,为服务准备接收器。” "初始化符合NSCoding协议(protocol)的对象(包括UIView和UIViewController的所有子类) 使用他们的 initWithCoder: 方法。所有不符合的对象 NSCoding 协议(protocol)使用它们的 init 方法进行初始化。在所有对象都被实例化之后 初始化后,nib 加载代码为所有这些对象重新建立导出和操作连接。然后它 调用对象的 awakeFromNib 方法。”

我的问题是为什么加载 xib 文件时 awakeFromNib 没有调用? 我做错了什么吗?请详细说明

最佳答案

awakeFromNib:仅当 view controller 在 nib 文件中时被调用。
在这种情况下,您使用 init initWithNibName:bundle 初始化 View Controller ,因此 View Controller 的内容在 nib 内部,而不是 View Controller 本身
如果你打开 xib 文件,将一个对象拖到 xib 中并将类设置为你的 View Controller 类名,然后 awakeFromNib 将被调用(这种情况下你不需要手动初始化 View Controller )。
所以请记住在 xib 文件中有一个 View Controller 和一个不在 xib 文件中但所有内容都从 xib 文件加载的 View Controller 之间的区别。

PS: 我交替使用了 nib 和 xib。

编辑
我忘了告诉你如何解决这个问题。重写 viewDidLoad 来处理初始化的 socket 。

关于iphone - awakeFromNib 不是调用而是显示 xib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13729814/

相关文章:

ios - 从 UIView 子类调用 popViewControllerAnimated

iphone - MonoTouch——我们应该使用企业许可证还是专业许可证?

iphone - 如果单元格是第一个响应者并且不在屏幕上,则不会调用UITableViewCell setEditing:animated

iphone - Apple 会拒绝使用 sksmtpmessage 框架在后台发送电子邮件的应用程序吗?

ios - 当单元格不可见时,如何访问和迭代 UITableView 中的 contentView.subviews?

ios - 如何访问 iOS 中的设置

objective-c - 变量不是类的静态成员

ios - 在我的应用程序上模仿 iOS 7 的主屏幕搜索栏

objective-c - 最近的文件

ios - 谷歌通讯录 OAUTH2