作为 Cocoa 的新手,我遇到了一些问题Interface Builder
, UIViewController
和朋友。
我有一个UIViewController
子类具有UIView
在 xib 中定义,并将控制器的视图出口连接到视图。 xib 的“文件所有者”设置为我的视图控制器子类。
在这种情况下,以下用于加载控制器/视图(从主视图控制器)的代码无法按预期工作:
if ( self.myViewController == nil )
{
self.myViewController = [[MyViewController alloc]
initWithNibName:@"MyViewController" bundle:nil];
}
[self.navigationController
pushViewController:self.myViewController animated:YES];
在 MyViewController 的方法中,我放置了断点和日志消息来查看发生了什么:
-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
NSLog(@"initWithNibName\n");
}
return self;
}
-(void)viewDidLoad {
[super viewDidLoad];
NSLog(@"viewDidLoad\n");
}
预期结果
Both -initWithNibName
and -viewDidLoad
方法被调用,并且 myViewController 的视图被显示。
观察结果
Only -initWithNibName
被调用时,视图不会显示。
我错过了什么吗?有人可以推荐什么要检查的吗? (特别是在极其不透明的 Interface Builder 工具中)。