Вы устанавливаете delegate
вашего UITableView
в качестве первого контроллера.Не делайте этого, это delegate
уже установлено по умолчанию, как это UITableViewController
.
Вместо этого для передачи данных используйте закрытие обратного вызова:
class TVC: UITableViewController {
var itemSelected: (Item) -> Void = { _ in }
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
itemSelected(dataSourceArray[indexPath.row])
}
}
и вконтроллер первого вида устанавливает закрытие этого контроллера, когда вы представляете / толкаете его
let vc = TVC(...)
vc.itemSelected = { item in // this is called when you call `itemSelected` from `TVC`
// ... declare what will happen after item is selected
}
navigationController?.pushViewController(vc, animated: true)
или если вы используете сегы
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "identifier" {
let destination = segue.destination as! TVC
destination.itemSelected = { item in
// ...
}
}
}