Не передается значение в аутлет нового вью контроллера
У меня есть структура в которой при выполнении появится значение
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 шт):
Вам нужно вызвать использовать vc!.nameLabel?.text = item.name для того, чтобы передать данные, поскольку именно этот (vc!) контроллер вы открываете (pushViewController(vc!, ...)).
А так получается, что вы создаёте новый контроллер, который нигде не используется
let controller = ItemCellController()
controller.nameLabel?.text = item.name