故事板instantiateViewControllerWithIdentifier返回空视图控制器?

时间:2013-11-19 13:15:51

标签: ios objective-c cocoa-touch uiviewcontroller uistoryboard

我想懒惰地将自定义UIViewController作为孩子添加到自定义其他UIViewController中。我尝试在我的viewDidAppear:animated:中创建它:

- (void)viewDidAppear:(BOOL)animated {
  if (hostingUI == nil) { // `hostingUI` is an ivar
    hostingUI =
      [[UIStoryboard storyboardWithName:@"MainStoryboard"
                                 bundle:[NSBundle mainBundle]]
        instantiateViewControllerWithIdentifier:@"hosting-ui"];
    [self addChildViewController:hostingUI];
  }
}

我的ivar hostingUI一开始看似正常,但后来我发现其所有成员都是nil(在致电addChildViewController后打入LLDB)。

enter image description here

显然,父控制器中没有显示任何内容,而且我遗漏了instantiateViewControllerWithIdentifier的工作方式。

1 个答案:

答案 0 :(得分:1)

[myStoryboard instantiateViewControllerWithIdentifier:@"Some name"]将允许您从storyBoard实例化一个特定页面,其中包含所有内容(进/出segueIBOutletsIBActions)。但是,如果此特定视图应嵌入NavigationController,则您必须使用rootViewController实例化此视图。