【问题标题】:UIViewController loaded from nib: -viewDidLoad not being called从 nib 加载的 UIViewController:未调用 -viewDidLoad
【发布时间】:2010-08-03 02:19:37
【问题描述】:

在将 UIViewController 添加到 nib 时,我需要做些什么特别的事情吗?我的 -viewDidLoad 方法没有被调用,即使正在加载 nib 并且它的子类在 IB 中设置为我的视图控制器类。

http://dl.dropbox.com/u/448021/Test.zip

这是我的测试用例。我只是想不通为什么 FooViewController -viewDidLoad 没有被调用。

感谢您的帮助。

【问题讨论】:

    标签: iphone


    【解决方案1】:

    如果我没看错的话,您在那里创建的 FooViewController 没有任何用途。在 MainWindow.xib 中,您有一个导航控制器和您自己的 RootViewController。到目前为止,一切都很好。您在 RootViewController.xib 中定义该视图。也可以。但是最后一个 xib 里面的 View Controller 什么都不做,直到你做类似的事情

    [self.navigationController pushViewController:detailViewController animated:YES];
    

    (在您的 didSelectRowAtIndexPath 中)

    didSelectRowAtIndexPath 中被注释掉的部分基本上是在用户选择一行时调用一个新的视图控制器,并且在加载关联的 xib 文件时这样做,该文件在这一行中加载:

    DetailViewController *detailViewController = [[DetailViewController alloc]
                                                  initWithNibName:@"Nib name" bundle:nil];
    

    您也可以像现在一样在 nib 文件中创建视图控制器,但是您需要定义一个

    IBOutlet FooViewController *fooVC;
    

    并将其链接到 IB 中,然后在用户选择某些内容时将此 fooVC 推送到视图堆栈 - 在这种情况下,您将跳过上面的 alloc / init 行。

    【讨论】:

      【解决方案2】:

      给 FooViewController 添加一个视图。 只需转到界面生成器并将视图拖到 FooViewController 即可。

      【讨论】:

        猜你喜欢
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-21
        相关资源
        最近更新 更多