хранить разделенные данные на отдельном контроллере представления (swift4)

Мой код берет текст из текстового поля и переходит к отдельному контроллеру представления. Проблема в том, что он может хранить только 1 запись перехода. Новый заменяет старый при каждом нажатии кнопки. Как на vc2 я могу хранить каждую новую запись в файле segue.

VC

import UIKit

class ViewController: UIViewController {

    @IBOutlet var txt: UITextField!
    override func viewDidLoad() {
        super.viewDidLoad()

    }
    @IBAction func pressButton(_ sender: Any) {
        if txt.text != "" {
performSegue(withIdentifier: "segue", sender: self)

        }
        }
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let secondController = segue.destination as! twoViewController
        secondController.myString = txt.text!

    }
    }

дваВК

import UIKit

class twoViewController: UIViewController {

    @IBOutlet var labelSmtih: UILabel!
    var myString = String()

    override func viewDidLoad() {
        super.viewDidLoad()
        labelSmtih.text = myString
    }



}

person Community    schedule 25.10.2017    source источник


Ответы (1)


Если вторым контроллером представления является, например, UISplitViewController, вы должны иметь возможность добавить текст кнопки к метке, выполнив что-то в строках:

@IBAction func pressButton(_ sender: Any) {
        if txt.text != "" {
performSegue(withIdentifier: "segue", sender: self)

        }
        }
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let secondController = segue.destination as! twoViewController
        secondController.myString += txt.text!

    }
    }

Если у вас действительно есть отдельный контроллер представления, он, вероятно, потеряет данные, как только вы вернетесь к первому VC. В этом случае я предлагаю вам сохранить текущий текст метки в viewWillDisappear второго VC, а затем получить его с помощью функции prepareforsegue в первом VC. Подробнее здесь: Swift: как сохранить пользовательские настройки?

person Rodrigo Guimarães    schedule 27.10.2017