启动应用程序后不出现模态视图

Posted

技术标签:

【中文标题】启动应用程序后不出现模态视图【英文标题】:Modal view after start app does not appear 【发布时间】:2012-01-13 09:31:56 【问题描述】:

用户必须先登录才能使用我的应用程序。我的想法是,在应用启动后,登录视图会以模态方式出现。

ios 5 之前,我一直使用 .xib 文件。现在,我想将视图转换为 Storyboard 以便概览和更好地使用新功能。

该应用程序与 splitview 控制器一起使用。问题是登录视图已加载,但从未出现。

我在应用程序委托中进行了尝试,并为 splitviewcontroller 创建了一个类并尝试在 viewDidLoad 中加载它。

代码:

- (void)viewDidLoad

    [super viewDidLoad];

    //load and push login
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    LoginViewController *loginViewController = [storyboard instantiateViewControllerWithIdentifier:@"loginViewController"];

    NSLog(@"login push: %@", loginViewController);
    [self presentModalViewController:loginViewController animated:YES];
    NSLog(@"done push");

日志:

2012-01-13 10:18:08.217 App[1101:707] login push: <LoginViewController: 0x472fe0>
2012-01-13 10:18:08.330 App[1101:707] done push

我试图在根视图或详细视图中加载它,它可以工作,但它不是正确的位置,xcode 给出了消息:

2012-01-13 10:18:08.807 App[1101:707] Unbalanced calls to begin/end appearance transitions for <MainSplitViewController: 0x464bc0>.

我的第一个想法是从登录视图开始,登录后推送 splitview 控制器。但是我发现 splitview 控制器必须是根视图。

【问题讨论】:

【参考方案1】:

在 viewDidLoad 中推送另一个 ViewController 是很早的。也许当前 ViewController 带有动画,而您尝试向另一个 ViewController 展示动画...

您应该尝试将 LoginController 的显示移动到 viewDidAppear ...

【讨论】:

非常感谢。我自己没想到...有时解决方案很简单。再次感谢!

以上是关于启动应用程序后不出现模态视图的主要内容,如果未能解决你的问题,请参考以下文章

viewDidAppear:在启动期间出现的模态视图控制器上调用两次

模态视图启动?

为啥在呈现这个模态视图时会有延迟?

应用程序激活时呈现模态视图

如何在所有其他视图之前以模态方式呈现“启动视图”?

iOS在启动时呈现模态视图控制器而不使用flash