Как выполнить переход от didSelectRowAt - PullRequest
1 голос
/ 23 мая 2019

Я застрял с этой простой задачей на выполнение перехода из выбранной ячейки.

Я создал переход от одного ViewController к другому с идентификатором "showDetails".Чем я пытаюсь этот код:

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

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showDetails",
    let destination = segue.destination as? DetailsViewController {
        let indexPath = tableView.indexPathForSelectedRow!
        destination.rideIndex = indexPath.row
    }
}

Видимо, это не работает.Что я делаю не так?

1 Ответ

0 голосов
/ 23 мая 2019

Проверьте делегата UITableView и убедитесь, что вы устанавливаете свой переход на «Представлять модально или показывать» и:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showDetails" {
        let destination = segue.destination as! DetailsViewController 
        let indexPath = tableView.indexPathForSelectedRow!
        destination.rideIndex = indexPath.row
    }
}

Но лично я предпочитаю следующий код для открытия UIViewController:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let mainStoryboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let destination = mainStoryboard.instantiateViewController(withIdentifier: "DetailsViewController") as! DetailsViewController
        let indexPath = tableView.indexPathForSelectedRow!
        destination.rideIndex = indexPath.row
        self.present(destination, animated: true, completion: nil)
}

и убедитесь, что ваш DetailsViewController имеет идентификатор «DetailsViewController»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...