Iphone IBUIViewController是如何构造的?
我正在扩展苹果的模板。我希望在构造RootViewController时运行以下代码Iphone IBUIViewController是如何构造的?,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我正在扩展苹果的模板。我希望在构造RootViewController时运行以下代码 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillEnterForeground:) name:UIApplicationWillEnterForegroundNotification object: nil]; 问题是我不知道如何构造RootViewController。我尝试了
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationWillEnterForeground:)
name:UIApplicationWillEnterForegroundNotification
object: nil];
问题是我不知道如何构造RootViewController。我尝试了以下两种方法,但从未执行过。我在这些方法中加入了NSLog
,但它们从未打印出来
- (id)initWithNibName:(NSString *)nibNameOrNil
bundle:(NSBundle *)nibBundleOrNil
- (id)init
我打开MainWindow.xib,注意到它在
UIApplicationLegate
中将RootViewController作为IBOutlet加载。现在,RootViewController是UIViewController
的一个子类。因此,问题归结为“IBOutlet UIViewController是如何构造的?”您可以在awakeFromNib方法中执行需要执行的代码,一旦创建了outlet,解码器就会调用该方法。您能否解释为什么NSObject中定义的-(id)init
没有执行?RootViewController->UITableViewController->UIViewController->NSResponder->NSObject。NIB文件存储序列化对象。加载nib文件时,它们被反序列化,而不是创建,因此不会调用init方法。这就是为什么您有awakeFromnib,所以您不必麻烦=)我不知道如何将awakeFromnib
添加到我的UIViewController
。我导入了NSNibLoading.h
,因为它是在那里定义的。我在协议列表中出现了NSNibAwaking
。我添加的两行都表示某某没有定义。根据文档awakeFromNib
来自AppKit.framework
。我甚至无法在现有框架列表中找到该框架。我完全迷路了。awakeFromNib被添加到NSObject中,您所要做的就是将方法-(void)awakeFromNib
添加到您的RootViewController中,它将被调用。