2015-12-02 4 views
0

У меня есть два контроллера вида и в ViewController 1 У меня есть выбор даты и текстовое поле. У меня есть другой ViewController, который отображает то, что вы ввели в этот сборщик дат и текстовое поле. У меня есть кнопка ¨change¨, которая возвращает вас к этому первому контроллеру представления и ¨doen¨button, которые показывают контроллер представления 2. На данный момент текст в текстовом поле и дата, которую пользователь выбрал, исчезают каждый раз, когда вы закрываете приложение или нажмите кнопку ¨change (вернитесь к контроллеру 1).Swift: Как сохранить ViewControllers в том же состоянии?

Как сохранить текст в текстовом поле и выбранную дату в списке выбора даты.

Я хочу, чтобы пользователь мог изменить информацию, которая уже была добавлена.

Пожалуйста, добавьте код.

http://imgur.com/PDzJrNJ (Изображение главного раскадровки)

ответ

1

, как вы показываете ViewControllers не является оптимальным. В лучшем случае, когда вы показываете что-то новое (ViewController2), затем отпустите его, он вернет вас к предыдущему экрану (ViewController1). Он не должен создавать экземпляр нового экземпляра ViewController1, так как в этом случае выполняется segues.

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

В случае, если ваш переход от первого контроллера ко второму является «Show» Segue, вы можете просто добавить следующее к кнопке «Изменить»:

@IBAction func changeButtonPressed(sender: AnyObject) { 
    self.dismissViewControllerAnimated(true, completion: nil) 
} 

В случае, если у вас есть навигационный контроллер (Я не вижу таких на скриншоте), то вы можете использовать

@IBAction func changeButtonPressed(sender: AnyObject) { 
    self.navigationController.popViewControllerAnimated(true) 
} 
+0

Большое вам спасибо! В моем случае я использую «show» segue, поэтому добавление данного кода отлично работает. – Gjeruldsen

0

Что вы могли бы попробовать сделать это сохранить данные перед выходом контроллера представления. В методе viewWillDisappear можно добавить

NSUserDefaults.standardUserDefaults().setObject(textField.text, forKey: "userText") 
NSUserDefaults.standardUserDefaults().setObject(datePicker.date, forKey: "userDate") 

Позже, когда вы вновь открыть один и тот же контроллер представления, в методе viewDidLoad, вы можете добавить

if NSUserDefaults.standardUserDefaults().objectForKey("userText") != nil { 
    textField.text = NSUserDefaults.standardUserDefaults().objectForKey("userText") as! String 
} 

if NSUserDefaults.standardUserDefaults().objectForKey("userDate") != nil { 
    datePicker.setDate(NSUserDefaults.standardUserDefaults().objectForKey("userDate") as! NSDate, animated: true) 
} 

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

+0

Он отлично работает для текстового поля, но сборщик даты сбрасывается каждый раз, когда я возвращаюсь. – Gjeruldsen

+0

Извините. Позвольте мне исправить свой ответ – penatheboss

+0

Это работает? – penatheboss

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