我对iOS编程很新,我正在开发一个iPad应用程序,它附带一个带有4个视图控制器的Tab键控制器(名为FirstViewController,SecondViewController等)。目前,标签栏控制器设置为应用程序的默认起点。我希望能够在用户到达该点之前对其进行身份验证,因此我添加了另一个名为LoginViewController的View Controller,它在Storyboard中自行浮动。
我想要做的是允许加载应用程序并在didFinishLaunching中显示登录页面,直到身份验证完成,然后关闭它。我一直在寻找过去的几天,但我一直在尝试的一切都失败了。
我目前的最新尝试是
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
UINavigationController *loginVC = [storyboard instantiateViewControllerWithIdentifier:@"loginVC"];
loginVC.modalPresentationStyle = UIModalPresentationFullScreen;
[self.window.rootViewController presentModalViewController:loginVC animated:YES];
任何帮助将不胜感激。它编译并运行,但视图根本没有出现,我真的很困惑为什么会这样。
答案 0 :(得分:12)
问题是我试图将它实例化为UINavigationController,而实际上它只是一个UIViewController。在appDelegate.m中的applicationDidBecomeActive中调用它可以解决这个问题。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *loginVC = [storyboard instantiateViewControllerWithIdentifier:@"loginVC"];
loginVC.modalPresentationStyle = UIModalPresentationFullScreen;
[self.window.rootViewController presentModalViewController:loginVC animated:YES];
答案 1 :(得分:2)
您需要从当前显示的viewController调用“presentModalViewController”,而不是要显示的视图。可能,像这样:
[self.window.rootViewController presentModalViewController:loginVC animated:YES];
答案 2 :(得分:2)
在Swift 2中,现在是:
if let loginController: LoginViewController = mainStoryboard.instantiateViewControllerWithIdentifier("StoryboardControllerID") as? LoginViewController {
loginController.modalPresentationStyle = .FullScreen
self.window?.rootViewController?.presentViewController(loginController, animated: true, completion: { () -> Void in
// do stuff!
})
}