如何从非viewcontroller类启动视图控制器

时间:2017-08-08 06:57:06

标签: swift3 viewcontroller nsobject

我想打开来自nsobject的inherts类的现在的uiviewcontroller。这个工作吗? 我试过这段代码

let storyboard = UIStoryboard(name: "Main", bundle: nil)

let initialViewController = storyboard.instantiateViewController(withIdentifier: "LoginSignupVC")
self.present (initialViewController, animated: false, completion: nil)

1 个答案:

答案 0 :(得分:2)

在您的代码中self.present无法正常工作,因为您在 NSObject 类中。

所以self指的是NSObject类。

NSObject类中没有方法present

要呈现视图控制器,您必须以root身份拥有导航控制器。

解决方案1:所以使用self.navigationController获取导航控制器并向其显示视图控制器。

let initialViewController = self.storyboard!.instantiateViewControllerWithIdentifier("LoginSignupVC") as! ViewController
self.navigationController!.presentViewController(initialViewController, animated: true)

解决方案2:手动创建一个导航控制器并显示在其中。

let initialViewController = self.storyboard!.instantiateViewControllerWithIdentifier("LoginSignupVC") as! ViewController
let navController = UINavigationController(rootViewController: initialViewController) 
self.presentViewController(navController, animated:true, completion: nil)