@NONAME8

Как правильно передать значения в массив из другого VC?

Мне нужно добавлять строки в массив, полученные из TextField другого ViewController-a.
Но когда я это делаю то у меня постоянно перезаписывается последняя строка и все.

// ПЕРВЫЙ VIEW CONTROLLER
import UIKit
class ViewController: UIViewController {
    @IBOutlet var takeList: UITextField!
    var per:String=""

    @IBAction func passData(_ sender: Any) {
        per=takeList.text!
    }
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let ViewController2 = segue.destination as! ViewController2
        ViewController2.list.append(per)
    }


//ВТОРОЙ VIEW CONTROLLER
class ViewController2: UIViewController {
    var list=["123","12431","12314"]
    @IBAction func print(_ sender: Any) {
        print(list) 
    }


как сделать так, чтобы у меня нормально добавлялись значения в массив ?
и не используя глобальный массив.
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
  • doublench21
    @doublench21
    Ты имеешь ввиду почему не сохраняются предыдущие добавленные строки в массиве? Если да, то любой вью контроллер создаётся и уничтожается по надобности. Ты переходишь на него, он создался. Уходишь с него, удалился(и данные в массиве тоже). Так что если тебе нужны все данные что были в UITextField и ты постоянно бегаешь туда сюда, то их надо где-то сохранять.

    Что бы вообще передавать данные между двумя вью контроллерами, есть такая вещь как делегаты. К примеру UITableViewDataSource/UITableViewDelegate. Но передача в методе prepare тоже вполне себе нормальный вариант.

    Если чего не понял, поясните.

    Пример того как могут общаться классы:
    dAll0IO.jpg
    Ответ написан
Пригласить эксперта
Ответы на вопрос 1
  • briahas
    @briahas
    ObjC, Swift, Python
    Могу только предположить, что у тебя постоянно создается либо масив, либо вьюконтроллер.
    Тут надо только дебажить код.
    Поставь брекпоинт на строчке ViewController2.list.append(per) и проверь значение list до исполнения этой строчки и после.
    Если на этом этапе все норм - иди назад по логике и ищи кто удаляет (создает заново массив) добавленные ранее значения.
    Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Вакансии с Моего Круга Все вакансии
Заказы с Фрилансим Все заказы