我有一个带有自定义init方法的UIViewController,如下所示:
- (id)initWithFrame:(CGRect)frame_ customObject:(CustomObject *)object_ {
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
self = [super initWithNibName:@"ArtistViewController_iPad" bundle:nil];
} else {
self = [super initWithNibName:@"ArtistViewController" bundle:nil];
}
[self.view setFrame:frame_];
self.customObject = object_;
return self;
}
但是当[self.view setFrame:frame_];被调用,它在日志中崩溃:
(空) libc ++ abi.dylib:terminate调用抛出异常
这是我从另一个UIViewController分配UIViewController的方式:
CGRect frame = self.view.frame;
artistViewController = [[ArtistViewController alloc] initWithFrame:frame customObject:anObject];
框架存在。 self存在于[super initWithNibName:bundle];
但是self.view似乎不存在。存在nib文件并将其视图连接起来。
为什么会这样?
答案 0 :(得分:3)
您不应该从初始化程序中访问该视图。根据你真正想要完成的工作,有几个更合适的地方可以完成这项工作。
阅读视图控制器生命周期,以了解您可能希望进行修改的位置。