Performsegue в таблице viewcell не работает - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть просмотр таблицы в моем контроллере представления, и у меня возникает проблема при выполнении операции pu sh, когда я нажимаю на свою пользовательскую ячейку просмотра таблицы. Есть ли что-то уникальное, что я должен сделать, когда мое табличное представление находится в контроллере представления? Код ниже.

extension MyPersonalViewController: UITableViewDelegate, UITableViewDataSource {

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "showGuest", sender: self)
    tableView.deselectRow(at: indexPath, animated: true)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showGuest" {
        if let indexPath = tableView.indexPathForSelectedRow {
            let guestVC = segue.destination as! GuestViewController
            guestVC.navigationItem.title = "Project"  
        }
    }
}

Ответы [ 3 ]

0 голосов
/ 04 апреля 2020

В раскадровке вы сможете создать переход, удерживая клавишу управления, затем щелкая ячейку и перетаскивая ее в контроллер представления назначения.

В вашем методе didSelectRowAt вы не можете нужно что-нибудь сделать. Я имею в виду, что вам не нужно звонить performSegue. Все это будет происходить изнутри благодаря последовательности, которую вы определили в раскадровке.

В вашем методе prepare вам нужно будет сделать что-то вроде этого:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    guard segue.identifier == "showGuest" else { return }
    guard let cell = sender as? UITableViewCell else { return }
    guard let indexPath = tableView.indexPath(for: cell) else { return }
    guard let dest = segue.destination as? GuestViewController else { return }
    dest.data = data[indexPath.row]
}
0 голосов
/ 04 апреля 2020

Вставить представление вашей ячейки таблицы в UINavgationController.

Создание представления

 let guestVC = segue.destination as! GuestViewController
 guestVC.navigationItem.title = "Project"  

 self?.navigationController?.pushViewController(guestVC!, animated: true)
0 голосов
/ 04 апреля 2020
#You can try the below code:#

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "SegueIdentifierName" {
            let destinationVC = segue.destination as! DestinationViewController
            destinationVC.Outlet = "label"  
    }
}
...