Не передается значение в аутлет нового вью контроллера

У меня есть структура в которой при выполнении появится значение

struct Item {
var name: String

init(name: String){
    self.name = name  
}  
}

Я создаю массив, чтобы хранить там структуры

var items = [Item]()

Экземпляры из массива отображаются в таблицу, с этим проблем нет, я хочу, чтобы при нажатии на конкретную ячейку открывался новый ВС:

class ItemCellController: UIViewController {
@IBOutlet weak var nameLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()   
}  

}

И чтобы в его аутлете отображалась соответствующая информация из конкретной структуры. Для этого я в тейбл вью контроллере создаю функцию переводящую меня на это новое вью:

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    
    let vc = (storyboard?.instantiateViewController(withIdentifier: "ItemCellVC"))! as? ItemCellController
    self.navigationController?.pushViewController(vc!, animated: true)

И в этой же функции пытаюсь затолкать значение из структуры в аутлет:

    let item = items [indexPath.row]
    let controller = ItemCellController()
    
    controller.nameLabel?.text = item.name

}

И вот собственно проблема: в структуре значение точно есть, а вот в аутлет нового вью контроллера оно не передается, через команду принт отображает значение нил и лейбл не меняется.Как мне его туда затолкать?


Ответы (1 шт):

Автор решения: Klim Postironin

Вам нужно вызвать использовать vc!.nameLabel?.text = item.name для того, чтобы передать данные, поскольку именно этот (vc!) контроллер вы открываете (pushViewController(vc!, ...)).

А так получается, что вы создаёте новый контроллер, который нигде не используется

let controller = ItemCellController()
controller.nameLabel?.text = item.name
→ Ссылка