UITableView Cell点击无法跳转至TwitterHomeViewDetailViewController求助
问题排查与解决方案
1. 检查导航控制器配置
如果你的TableViewController未嵌入UINavigationController,或是通过present方式展示的,pushViewController操作会直接失效(无导航栈支持推送)。
- 打开Storyboard,确认TableViewController是
UINavigationController的根视图控制器,或当前页面处于有效导航栈中。 - 若通过代码初始化TableViewController,需将其包裹进导航控制器后再展示:
let tableVC = YourTableViewController() let navVC = UINavigationController(rootViewController: tableVC) present(navVC, animated: true)
2. 验证Segue配置(若使用Storyboard Segue跳转)
- 确认Segue是从TableViewCell直接连接到
TwitterHomeViewDetailViewController,而非从TableViewController连接(除非你在didSelectRowAt中手动触发)。 - 检查Segue的Identifier拼写与代码完全一致,比如代码中触发Segue的逻辑:
则Storyboard里的Segue Identifier必须严格匹配override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { performSegue(withIdentifier: "ShowDetailSegue", sender: self) }ShowDetailSegue。
3. 检查手动跳转代码(若不使用Segue)
如果是手动初始化详情页跳转,确保代码逻辑正确:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { // 从Storyboard获取详情VC,替换为你的Storyboard名称 guard let detailVC = storyboard?.instantiateViewController(withIdentifier: "TwitterHomeViewDetailViewController") as? TwitterHomeViewDetailViewController else { return } // 确保当前VC处于导航栈中,才能执行push操作 navigationController?.pushViewController(detailVC, animated: true) }
- 确认
TwitterHomeViewDetailViewController在Storyboard中的Identifier与代码字符串完全匹配。 - 若
navigationController为nil,说明当前VC不在导航栈中,回到第一点检查导航配置。
4. 检查TableView代理设置
确保TableViewController已设置为tableView的delegate:
- 在Storyboard中,检查TableView的delegate和dataSource是否连接到TableViewController。
- 或在代码中手动设置:
override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self }
内容的提问来源于stack exchange,提问作者Karon bell
相关产品推荐
相关产品推荐

