выполните segue в viewDidLoad () без навигационного контроллера в Swift
у меня есть три вида (вид 1 проверяет соединение с сервером, вид 2 показывает основное содержимое, вид3 показывает страницу поддержки), и я создал их в раскадровке без кодирования. При запуске приложения 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()
функция не работает, но я не знаю, почему. Я добавил кнопку на view, чтобы проверить его. Я реализовал тот же код, что и в viewDidLoad()
и он отлично работает. При нажатии на кнопку загружается следующий вид.
есть ли идеи, почему код не работает?
3 ответов
вы можете использовать этот код для навигации.
let vc : UIViewController = self.storyboard?.instantiateViewControllerWithIdentifier("ConnectionCheckToMain") as! UIViewController;
self.presentViewController(vc, animated: true, completion: nil)
этот код решить для меня (Swift 3) с помощью "segue" (пожалуйста, замените "ConnectionCheckToMain" с вашим именем segue.
DispatchQueue.main.async(execute: {
self.performSegue(withIdentifier: "ConnectionCheckToMain", sender: nil)
})
У меня была такая же проблема и я ее решила с помощью этого кода:
dispatch_async(dispatch_get_main_queue(), { () -> Void in
let viewController:UIViewController = self.storyboard?.instantiateViewControllerWithIdentifier("ViewControllerClassId") as! ViewControllerClassName
self.presentViewController(viewController, animated: true, completion: nil)
})