Вариантов несколько, вот грубый пример передачи данных через segue. Допустим, у нас есть массив неких данных. Для примера возьмем тупо массив названий предметов
let array = ["математика", "физика"]
. В tableViewController №2 создаете переменную которой будете передавать название предмета
var name = ""
Создаете seque от ячейки первого контроллера ко второму. Этому seque прописываете id "Seque". Далее в tableViewController №1 прописываете метод:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "Seque" {
if let indexPath = self.tableView.indexPathForSelectedRow {
let destinationVC = segue.destination as! SecondTableViewController
destinationVC.name = self.array[(indexPath as NSIndexPath).row]
}
}
}