Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone IBUIViewController是如何构造的?_Iphone_Objective C_Cocoa Touch - Fatal编程技术网

Iphone IBUIViewController是如何构造的?

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。我尝试了

我正在扩展苹果的模板。我希望在构造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中,它将被调用。