2015-05-01 2 views
2

У меня проблема, когда у меня есть два контроллера вида A и B. В контроллере B есть карта с трассировкой маршрута на нем. Я могу перемещаться назад и вперед между двумя контроллерами представления в данный момент, но контроллер просмотра B сбрасывается каждый раз, когда он загружается. Я думаю, что это потому, что я использую segues, и каждый раз он создает новый экземпляр контроллера View.iOS Swift, возвращаясь к тому же экземпляру контроллера вида

Я попытался использовать следующий код для решения этой проблемы, но он все еще не работает. Взгляды нагрузить правильно, но вид контроллер B продолжает быть сброс

@IBAction func mapButton(sender: AnyObject){ 
     let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil) 
     let vc = storyboard.instantiateViewControllerWithIdentifier("SecondViewController") as! UIViewController 
     self.presentViewController(vc, animated: true, completion: nil) 
} 

Что я делаю неправильно и как я могу это исправить? Я хочу, чтобы контроллер просмотра B оставался в памяти вместе с картой и маршрутом, поэтому, когда пользователь возвращается, ему не нужно снова вводить всю информацию.

ответ

3

Вы должны создать переменную в классе типа UIViewController и изменить свой код к следующему:

@IBAction func mapButton(sender: AnyObject){ 
    if yourVariable == nil { 
     let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil) 
     yourVariable = storyboard.instantiateViewControllerWithIdentifier("SecondViewController") as! UIViewController 
    } 
    self.presentViewController(yourVariable, animated: true, completion: nil) 
} 

Таким образом, вы создаете ViewController один раз, сохранить его, и если вы хотите, чтобы открыть его снова присутствует ранее созданный.

+0

Спасибо за помощь, сейчас это работает. Теперь имеет смысл, я не знаю, как мне это удалось. – Gux

+0

Нет проблем. Если мой ответ решит вашу проблему, пожалуйста, примите его, нажав галочку под номером ответа слева. – luk2302

+0

Еще лучше, ленивая загрузка 'yourVariable'. Тогда вам нужно только проверить, нет ли в одном месте. – AdamPro13

Смежные вопросы