Для передачи ячейки в следующий tableViewController
в Swift у нас есть несколько вариантов реализации. Давайте рассмотрим некоторые из них:
- Передача данных через функцию prepareForSegue:
- Создайте segue (переход) между вашим текущим
tableViewController
и следующимtableViewController
в Interface Builder. - Добавьте идентификатор к вашему segue.
- В вашем текущем
tableViewController
найдите методprepare(for:sender:)
и переопределите его. - Внутри этого метода можно получить следующий
tableViewController
изsegue.destination
и сделать необходимые настройки. - Чтобы передать ячейку, вам необходимо передать данные ячейки из текущего
tableViewController
в следующийtableViewController
через свойство или метод в следующемtableViewController
.
Пример кода выглядит следующим образом:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "NextViewControllerSegue" { // Получаем следующий tableViewController if let nextTableViewController = segue.destination as? NextTableViewController { // Передаем ячейку через свойство в следующий tableViewController nextTableViewController.cellData = selectedCellData } } }
- Использование делегаций:
- Создайте протокол для делегата, который будет передавать данные ячейки из текущего
tableViewController
в следующийtableViewController
. - В вашем текущем
tableViewController
создайте свойство делегата. - В следующем
tableViewController
реализуйте этот протокол и присвойте себя в качестве делегата текущемуtableViewController
. - При выборе ячейки вызовите метод делегата для передачи данных.
Пример кода выглядит следующим образом:
// Протокол делегата protocol CellDataDelegate: class { func didSelectCellWithData(_ data: CellData) } class CurrentTableViewController: UITableViewController { // Свойство делегата weak var delegate: CellDataDelegate? // ... override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let selectedCellData = // Получение данных выбранной ячейки delegate?.didSelectCellWithData(selectedCellData) } } class NextTableViewController: UITableViewController, CellDataDelegate { // Реализация метода делегата func didSelectCellWithData(_ data: CellData) { // Используйте переданные данные } // В текущем tableViewController установите себя в качестве делегата при переходе }
Это лишь два из возможных способов передачи данных между viewControllers
. В зависимости от вашего конкретного случая, может потребоваться другой подход. Используя эти методы вы сможете передавать данные ячейки из текущего tableViewController
в следующий tableViewController
в Swift.