我有一个从UIViewController继承的类。在这里,我想进行一些ivar初始化,如下所示:

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle { // Load the view nib
    NSLog(@"Hello Earth!");
    if (self = [super initWithNibName:nibName bundle:nibBundle]) {
        self.visibleIndex = 0;
        NSLog(@"Hello Planet!");
    }
    return self;
}


出于某种原因,我确实看到了从笔尖加载的内容。但是由于另一个原因,该初始化器将永远不会被调用。我从没收到日志消息。怎么了我肯定有一个笔尖,所以实际上必须要这样,对吗?

最佳答案

如果您的UIViewController是由笔尖创建的,则不使用此方法。您需要覆盖viewDidLoad:

-(void) viewDidLoad {
    [super viewDidLoad];
    NSLog(@"Hello Planet");
}


仅当您实际上是通过代码实例化控制器时才使用initWithNibName。

关于iphone - 为什么在加载 View Controller 时未调用我的initWithNib方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/914867/

10-09 12:59