修改:解决此问题时,我发现从UITabBarController
开始,然后通过 {{1}执行登录验证会容易得多}} AppDelegate.m
方法。
问题: 此代码位于AppDelegate.m
中的didFinishLaunchingWithOptions:
方法中
application didFinishLaunchingWithOptions:
只需对用户登录进行HTTP响应,然后将其带到我的TabBarController。问题是它使用推送而不是模态转换来显示页面。由于在iOS7中不推荐使用presentModalViewController方法,因此如何以编程方式强制进行模式演示?
答案 0 :(得分:30)
旧的presentViewController:animated:
方法已被弃用,我们需要使用presentViewController:animated:completion
。您现在只需要在方法中添加completion
参数 - 这应该有效:
if([result isEqualToString: @"log"])
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *ivc = [storyboard instantiateViewControllerWithIdentifier:@"TabBarControl"];
[(UINavigationController*)self.window.rootViewController presentViewController:ivc animated:NO completion:nil];
NSLog(@"It's hitting log");
}
文档是一个很好的起点 - docs for UIViewController presentViewController:animated
告诉您确切需要知道的内容:
presentModalViewController:动画:
呈现由给定视图控制器管理给用户的模态视图。 (在iOS 6.0中不推荐使用。请改用
presentViewController:animated:completion:
。)- (void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated
答案 1 :(得分:18)
由于接受的答案是在Objective-C中,因此您将在Swift中执行此操作。但是,与接受的答案不同,这个答案没有引用导航控制器。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let secondViewController = storyboard.instantiateViewController(withIdentifier: "secondViewController") as! SecondViewController
self.present(secondViewController, animated: true, completion: nil)
根据需要更改故事板名称,视图控制器和ID。
答案 2 :(得分:1)
在Swift 4.2中,您可以这样做。对于那些想要快速更新版本的人。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "ExampleViewController")
self.present(controller, animated: true, completion: nil)
答案 3 :(得分:0)
在Swift 3/4中
let storyB = UIStoryboard(name: "Main", bundle: nil)
let secondViewController = storyB.instantiateViewController(withIdentifier: "SecondViewControllerID") as! SecondViewController
self.present(secondViewController, animated: true, completion: nil)
答案 4 :(得分:0)
let storyB = UIStoryboard(name: "Main", bundle: nil)
let secondViewController =
storyB.instantiateViewController(withIdentifier:
"SecondViewControllerID") as! SecondViewController
self.present(secondViewController, animated: true, completion: nil)
在secondViewController中使用此代码返回。
self.dismiss(animated: true, completion: nil)