iPhone UIStoryBoard是否可以通过编程方式创建一个控制器,其接口在情节提要中定义?

iPhone UIStoryBoard是否可以通过编程方式创建一个控制器,其接口在情节提要中定义?,iphone,ios5,uiviewcontroller,uistoryboard,Iphone,Ios5,Uiviewcontroller,Uistoryboard,我在UIStoryBoard中定义了一组视图控制器。我喜欢把它们都放在一个地方,方便取用。但是,我遇到了一个问题,我需要在应用程序中的其他位置实例化视图控制器的副本是否可以使用脚本中定义的UIViewController接口以编程方式创建UIViewController? 否则,我将不得不将该控制器的情节提要视图复制到单独的.xib文件中,并手动加载该视图 谢谢你的澄清 是的,一点也不坏-实例化InitialViewController是您要查找的 我倾向于使用的助手是: - (void) lo

我在UIStoryBoard中定义了一组视图控制器。我喜欢把它们都放在一个地方,方便取用。但是,我遇到了一个问题,我需要在应用程序中的其他位置实例化视图控制器的副本是否可以使用脚本中定义的UIViewController接口以编程方式创建UIViewController?

否则,我将不得不将该控制器的情节提要视图复制到单独的.xib文件中,并手动加载该视图


谢谢你的澄清

是的,一点也不坏<代码>-实例化InitialViewController是您要查找的

我倾向于使用的助手是:

- (void) loadStoryboard:(NSString *)storyboardName animated:(BOOL)animated
{
  if ([_currentStoryboard isEqual:storyboardName])
  {
    return;
  }

  _currentStoryboard = storyboardName;

  UIStoryboard* storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
  UIViewController* newRootController = [storyboard instantiateInitialViewController];

  if (!animated)
  {
    self.window.rootViewController = rootController;
    return;
  }

  newRootController.view.alpha = 0.0;
  [self.window addSubview:newRootController.view];

  [UIView animateWithDuration:0.5 animations:^{
    newRootController.view.alpha = 1.0;
  } completion:^(BOOL finished) {
    self.window.rootViewController = newRootController;
  }];
}

此变体是为您的
AppDelegate
-应该可以轻松适应大多数情况的转储区设置的。

我希望加载在故事板中定义的特定视图控制器,而不是初始视图控制器。这可能吗?是的,UIStoryboard上的另一个可能帮助您的方法是
-(id)instantialeviewController-WithiIdentifier:(NSString*)标识符
。你可能想考虑把事情分解成多个故事板(尽管它在你的上下文中是有意义的)——到目前为止,这个模式对我的项目确实有帮助。