Как сделать переход из ячеек tableView?

Переход из ячеек UITableView в Swift можно реализовать несколькими способами. Ниже я расскажу о двух наиболее распространенных способах.

Способ 1: Программно
1. Сначала вам необходимо установить идентификатор для вашего контроллера назначения (в который вы хотите перейти). Можете сделать это в Interface Builder, задав идентификатор в поле "Storyboard ID", либо программно, используя свойство storyboardIdentifier:

let destinationStoryboard = UIStoryboard(name: "Main", bundle: nil)
guard let destinationVC = destinationStoryboard.instantiateViewController(withIdentifier: "DestinationViewController") as? DestinationViewController else { return }

2. В вашем классе, который является источником данных для UITableView, вы должны перейти на контроллер назначения при выборе ячейки. Чтобы это сделать, вы можете использовать метод tableView(_:didSelectRowAt:), который вызывается автоматически при выборе ячейки:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let destinationStoryboard = UIStoryboard(name: "Main", bundle: nil)
    guard let destinationVC = destinationStoryboard.instantiateViewController(withIdentifier: "DestinationViewController") as? DestinationViewController else { return }
    
    // Передача данных, если это необходимо
    destinationVC.someData = dataArray[indexPath.row]
    
    // Выполнение перехода
    navigationController?.pushViewController(destinationVC, animated: true)
}

Способ 2: С использованием Segue
1. В вашем контроллере назначения установите идентификатор segue, используя Interface Builder. Укажите этот идентификатор, чтобы выполнить переход:

2. В вашем классе, который является источником данных для UITableView вы должны выполнить переход по segue в методе tableView(_:didSelectRowAt:):

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "DestinationSegue", sender: self)
}

3. Чтобы передать данные на контроллер назначения, используйте метод prepare(for:sender:). Вам нужно проверить идентификатор segue и установить данные:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "DestinationSegue" {
        if let destinationVC = segue.destination as? DestinationViewController {
            // Передача данных
            destinationVC.someData = dataArray[indexPath.row]
        }
    }
}

В обоих способах вам необходимо убедиться, что вы правильно настроили ваши переходы в Main.storyboard или другом файле интерфейса. Проверьте, что ваш UITableView корректно соединен с вашим источником данных и делегатом