这看起来应该很简单,但事实证明它有很多具有挑战性的细微差别 - 而且我还没有在 Stack Overflow 上的其他地方找到完整、清晰和简单地回答这个问题的答案。
简而言之 - 我有一个 iPad 应用程序,它使用故事板来布局应用程序流程,并使用分割视图控制器作为主要根视图控制器。
该应用程序在启动时检查是否存储了登录凭据,如果是,则直接跳转到 UI,如果没有,则显示全屏登录页面。
但挑战是——应该在哪里进行条件检查,以及应该如何实例化登录屏幕?
我已经尝试了所有我能想到的排列。
在应用程序中,委托似乎是显而易见的地方,但调用 segues 或模式弹出窗口似乎被忽略,因为故事板中的视图尚未生效。
在分割视图的细节控制器的启动方法中,似乎是下一个明显的地方。
我能找到的最接近工作解决方案的描述如下:https://stackoverflow.com/a/8224389/529774 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 闪烁。
有小费吗?有好的工作示例吗?