现在我正在尝试使用 Storyboard,并且将我的UITableViewController
作为我的rootViewController
。现在在某些情况下,如果我的用户没有登录,我希望另一个 UIViewController
首先出现。我知道我可以对其执行 segue,但据我了解 TableView
仍会尝试加载,这不是我想要的,除非他们提供有关此 UIViewController
,我试图让第一个出现(如果说 NSUserDefaults
中不存在一个键)例如。
所以我的问题是,有没有一个简单的解决方案我可以添加到我的 appDelegate 以“覆盖” Storyboard中的 rootViewController
,或者出现在它之前,然后一个简单的按钮可以返回 Storyboard中的 rootViewController
吗?
谢谢!
最佳答案
与这个问题非常相似:UIStoryboard load from app delegate
您应该在 Interface Builder 中 View Controller 的 Identity 部分中设置 Storyboard ID。然后你可以通过
获取该屏幕UIViewController *viewControllerToShow = [storyboard instantiateViewControllerWithIdentifier:@"MyViewController"];
你最终会得到这样的结果:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
UIViewController *vc = nil;
if (someKindOfCheck) {
vc = [storyboard instantiateViewControllerWithIdentifier:@"MyViewController"];
}
else {
vc =[storyboard instantiateInitialViewController];
}
// Set root view controller and make windows visible
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = vc;
[self.window makeKeyAndVisible];
return YES;
}
关于ios - 覆盖第一个 iOS 屏幕的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26657477/