@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) 
    }


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

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

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

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

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

Войти через TM ID
Похожие вопросы
Frogogo Москва
от 70 000 до 100 000 руб.
BuildSafe Tech Санкт-Петербург
от 100 000 до 160 000 руб.
Int-Tech Екатеринбург
от 50 000 до 100 000 руб.
14 нояб. 2018, в 11:49
1000 руб./за проект
14 нояб. 2018, в 09:48
60000 руб./за проект