Swift tableviewcell内的Performsegue不工作
我的视图控制器中有一个tableview,当我单击自定义tableview单元格时,执行推送序列时遇到问题。当我的tableview位于视图控制器内时,我是否必须执行一些独特的操作?代码如下Swift tableviewcell内的Performsegue不工作,swift,uitableview,uiviewcontroller,segue,swift5,Swift,Uitableview,Uiviewcontroller,Segue,Swift5,我的视图控制器中有一个tableview,当我单击自定义tableview单元格时,执行推送序列时遇到问题。当我的tableview位于视图控制器内时,我是否必须执行一些独特的操作?代码如下 extension MyPersonalViewController: UITableViewDelegate, UITableViewDataSource { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: Index
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"
}
}
}
在故事板中,您应该能够通过按住control键,然后单击单元格,然后拖动到目标视图控制器来创建序列 在您的
didSelectRowAt
方法中,您不需要做任何事情。我的意思是你不需要调用performsgue
。所有这一切都将发生在引擎盖下感谢你在故事板中定义的segue
在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]
}
将表格单元格所在的视图嵌入UINavgationController 实例化您的视图
let guestVC = segue.destination as! GuestViewController
guestVC.navigationItem.title = "Project"
self?.navigationController?.pushViewController(guestVC!, animated: true)
对不起,那是个打字错误。它显示showGuest无处不在。“不工作”意味着它没有推进到下一个视图?您确定标识符是“showGuest”吗?
let guestVC = segue.destination as! GuestViewController
guestVC.navigationItem.title = "Project"
self?.navigationController?.pushViewController(guestVC!, animated: true)