Используемый ниже код используется для вставки другого контроллера вида в стек навигации.
При использовании instantiateViewControllerWithIdentifier
, segue заметно вяло в первый раз (~ 3 секунды), но происходит достаточно быстро каждый последующий раз. Другие сообщения SO, предлагающие обеспечить segue, происходят в основном потоке, который выполняет код, но это не устранило проблему.
Однако использование performSegueWithIdentifier
не приводит к задержке.
Код viewDidLoad
для SendViewController
одинаковый для первого и последующих нажатий.
Пробовал гашение viewDidLoad
для контроллера представления назначения, но все еще существует отставание для instantiateViewControllerWithIdentifier
, но не для performSegueWithIdentifier
.
Как исправить задержку с помощью instantiateViewControllerWithIdentifier
?
Без задержки:
@IBAction func buttonTapped(sender: UIButton) {
performSegueWithIdentifier(SendSegue, sender: self)
}
Результаты в задержке при первом просмотре SendViewController:
@IBAction func buttonTapped(sender: UIButton) {
dispatch_async(dispatch_get_main_queue()) {
let vc = self.storyboard!.instantiateViewControllerWithIdentifier(self.SendViewControllerID) as! SendViewController
self.navigationController!.pushViewController(vc, animated: true)
}
}