我在UIStoryBoard中定义了一堆视图控制器。我喜欢将它们放在一个地方以便于访问。但是,我遇到了一个问题,我需要在应用程序中的其他位置实例化视图控制器的副本。 是否可以使用故事板中定义的界面以编程方式创建UIViewController?
否则我必须将该控制器的故事板视图复制到单独的.xib文件中并手动加载视图。
感谢您的澄清!
答案 0 :(得分:4)
-instantiateInitialViewController
是您正在寻找的。 p>
我倾向于使用的帮手是:
- (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
的倾倒场而设置的 - 应该可以轻松适应大多数情况。