这看起来应该很简单,但事实证明它有很多具有挑战性的细微差别——而且我还没有在 Stack Overflow 上的其他地方找到完全、清晰、简单地回答这个问题的答案。
简而言之 - 我有一个 iPad 应用程序,它使用故事板来布局应用程序流程,以及一个拆分视图控制器作为主要的根视图控制器。
此应用程序在启动时检查是否存储了登录凭据,如果有,则直接跳转到 UI,如果没有,则显示全屏登录页面。
但挑战是——应该在哪里进行这种条件检查,以及应该如何实例化登录屏幕?
我已经尝试了我能想到的所有排列。
在应用程序中,委托似乎是显而易见的地方,但调用 segues 或模式弹出窗口似乎被忽略了,因为来自故事板的视图尚未生效。
在拆分视图的细节控制器的启动方法中似乎是下一个明显的地方。
我能找到的最接近工作解决方案的描述如下: https ://stackoverflow.com/a/8224389/529774
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"Login"];
[vc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentModalViewController:vc animated:NO];
}
但是通过这个由拆分视图的详细视图控制器调用的实现,底层拆分视图会在屏幕上短暂闪烁。
如果我从 viewDidAppear 更改为 viewWillAppear,则没有闪光灯 - 但即使屏幕旋转为横向,登录视图也会以纵向绘制。
正如我所说 - 这种有条件的登录显示似乎应该是常见且简单的,但我无法在任何地方找到一个简单的工作示例,它结合了拆分视图、故事板、旋转感知,并且可以防止 UI 闪烁。
有小费吗?指向良好工作示例的指针?