我有三个视图(视图1检查服务器连接,视图2显示主要内容,view3显示支持页面),我在故事板中创建它们而不进行编码。在启动我的iOS应用程序时,视图1在检查服务器连接时显示一个微调器。如果连接检查通过,那么我想去查看2,如果它失败,那么我想去查看3.视图1仅用于连接检查,我不想去回到这个观点。所以,我想我不需要导航控制器,或者?
在故事板中,我将所有视图与seques连接起来。在我的视图控制器1中,我这样做:
override func viewDidLoad() {
super.viewDidLoad()
let result:Bool = server.isServerAvailable(myURL)
if (result == true) {
performSegueWithIdentifier("ConnectionCheckToMain", sender: self)
}
else {
performSegueWithIdentifier("ConnectionCheckToSupport", sender: self)
}
}
但viewDidLoad()
函数中的这个段落并不起作用,但我不知道为什么。我在视图上添加了一个按钮来检查它。我在viewDidLoad()
中实现了相同的代码,但效果很好。单击按钮时,将加载下一个视图。
有什么想法代码没有用吗?
答案 0 :(得分:5)
这段代码解决了我(Swift 3)使用" segue" (请用您的segue名称替换" ConnectionCheckToMain"
DispatchQueue.main.async(execute: {
self.performSegue(withIdentifier: "ConnectionCheckToMain", sender: nil)
})
答案 1 :(得分:3)
您可以使用此代码进行导航。
let vc : UIViewController = self.storyboard?.instantiateViewControllerWithIdentifier("ConnectionCheckToMain") as! UIViewController;
self.presentViewController(vc, animated: true, completion: nil)
答案 2 :(得分:1)
我遇到了同样的问题,我用这段代码解决了这个问题:
dispatch_async(dispatch_get_main_queue(), { () -> Void in
let viewController:UIViewController = self.storyboard?.instantiateViewControllerWithIdentifier("ViewControllerClassId") as! ViewControllerClassName
self.presentViewController(viewController, animated: true, completion: nil)
})