1

我有一个 UIViewController 和一个自定义的 init 方法,如下所示:

- (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_]; 被调用,它在日志中崩溃:

(null) libc++abi.dylib: 终止调用抛出异常

这就是我从另一个 UIViewController 分配 UIViewController 的方式:

CGRect frame = self.view.frame;

artistViewController = [[ArtistViewController alloc] initWithFrame:frame customObject:anObject];

框架存在。自我存在于 [super initWithNibName:bundle];

但 self.view 似乎不存在。nib 文件存在并且连接了它们的视图出口。

为什么会这样?

4

1 回答 1

3

您不应该从初始化程序中访问视图。有几个更合适的地方来做这项工作,这取决于你真正想要完成的事情。

阅读视图控制器生命周期以了解您可能希望将修改放在哪里。

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ViewLoadingandUnloading/ViewLoadingandUnloading.html#//apple_ref/doc/uid/TP40007457-CH10-SW1

于 2012-08-25T20:54:52.580 回答