【发布时间】:2017-03-10 09:06:28
【问题描述】:
我正在使用此代码在 ViewController 中的容器内加载视图控制器,而不使用任何 segue。 示例:
let newViewController =self.storyboard?.instantiateViewController(withIdentifier: "FBViewController")
newViewController!.view.translatesAutoresizingMaskIntoConstraints = false
self.cycleFromViewController(oldViewController: self.currentViewController!, toViewController: newViewController!)
self.currentViewController = newViewController
此代码适用于任何控制器,但在一种情况下,我需要加载一个名为 FBViewController 的控制器,并在其 ViewDidLoad 中检查用户是否已登录,以防我想立即加载另一个控制器而不是 FBViewController。 我在 FBViewController 的 viewDidLoad 中尝试了这段代码:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "userProfilePage")
self.present(controller, animated: true, completion: nil)
我尝试在主视图控制器中调用一个方法来加载想要的视图:
let otherViewController: ViewController = ViewController()
otherViewController.loggedIn()
方法:
func loggedIn(){
let newViewController = self.storyboard?.instantiateViewController(withIdentifier: "userProfilePage")
newViewController!.view.translatesAutoresizingMaskIntoConstraints = false
self.cycleFromViewController(oldViewController: self.currentViewController!, toViewController: newViewController!)
self.currentViewController = newViewController
}
他们都没有工作。感谢您的帮助。
【问题讨论】:
-
你的代码部分不完整所以看不懂。但是请确保当您尝试呈现新控制器时,您应该在主线程中进行。我不知道您的目标是什么,但您可以在其他 ViewController 上展示新控制器,或者如果您使用导航控制器而不是推送新控制器。如果可能,请详细说明您的要求,并可能是详细的代码部分以便更好地理解。
-
@Premal 我编辑了描述,希望现在很明显。
-
不要在视图中使用该代码确实加载了,在视图中使用它确实出现了。
标签: ios swift controller