是否可以从情节提要中覆盖默认视图控制器以显示不同的控制器?当然,这一切都会发生在 AppDelegate 中。
问问题
6639 次
2 回答
10
@Martol1ni 我想使用你的答案,但我也想远离不必要的故事板混乱,所以我稍微调整了你的代码。但是,我确实为您的鼓舞人心的答案给了您+1。
我将以下所有内容放在默认控制器上。
- (void)gotoScreen:(NSString *)theScreen
{
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
UIViewController *screen = [self.storyboard instantiateViewControllerWithIdentifier:theScreen];
[app.window setRootViewController:screen];
}
然后在逻辑发生的地方,我会根据需要调用以下代码。
if(myBool == YES) {
[self gotoScreen:@"theIdentifier"];
}
于 2012-05-16T13:46:34.683 回答
5
我肯定会在 UINavigationController 中嵌入一个 rootView,所以你没有两个,而是三个视图。一个永远不会启动,只是控制所有其他的。然后像这样实现其中的方法:
- (void) decideViewController {
NSString * result;
if (myBool) {
result = @"yourIdentifier";
}
else {
result = @"yourOtherIdentifier";
}
self.navigationController.navigationBarHidden = YES; // Assuming you don't want a navigationbar
UIViewController *screen = [self.storyboard instantiateViewControllerWithIdentifier:@"view1ident"];
[self.navigationController pushViewController:screen animated:NO]; // so it looks like it's the first view to get loaded
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self decideViewController];
}
它永远不会看起来像第一个视图已加载。如果您使用的是 NIBS,您可以从 AppDelegate 执行所有操作...
于 2012-05-16T00:30:51.913 回答