iphone - 为什么加载 View Controller 时没有调用我的 initWithNib 方法?

标签 iphone cocoa-touch uikit uiviewcontroller nib

我有一个继承自 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;
}

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

最佳答案

如果您的 UIViewController 是由 nib 创建的,则不使用此方法。您需要重写 viewDidLoad:

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

仅当您实际通过代码实例化 Controller 时才使用 initWithNibName。

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

相关文章:

ios - Core Bluetooth 在后台广告和扫描

ios - UIPageViewController (ScrollStyle) 不调用 dataSource 方法

ios - 检查设备是否已锁定或解锁

ios - 使用基于属性的一组过滤子元素获取核心数据实体

iphone - UIAlert按钮大小

ios - locationOfTouch 导致 SIGABRT

iphone - 禁用 UIView 和控件

ios - trackWithMediaType 有时返回 0 首轨道

iphone - 使用 AVAudioPlayer 快进歌曲

iphone - 在保持最大项目总数的同时向历史记录添加新项目有什么技巧或最佳实践吗?