You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击FirstViewController的UITableViewCell无法跳转至ListViewController如何解决

跳转失效问题修复方案

核心错误原因

你代码中的跳转逻辑存在本质错误:刚初始化完成的ListViewController实例尚未加入任何导航控制器栈,此时调用vc.navigationController得到的是nil,可选链调用直接中断,不会执行跳转动作。

修复后的代码

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)
    // 增加安全性校验,避免强制解包崩溃
    guard let dataList = result?.data, indexPath.row < dataList.count else { return }
    let category = dataList[indexPath.row]
    // 注意:原代码传参为全量data,如果要展示当前分类对应的内容,需替换为category下对应的子数据
    let vc = ListViewController(items: category.subItems ?? []) 
    vc.title = category.title
    // 使用当前FirstViewController的导航控制器执行push操作
    self.navigationController?.pushViewController(vc, animated: true)
}

其他排查点

如果修改后仍无法跳转,按以下顺序检查:

  • 确认FirstViewController本身处于UINavigationController的管理栈中,若当前控制器没有绑定导航控制器,self.navigationController也会为nil。需检查项目根控制器配置,确保FirstViewController是导航控制器的根视图控制器。
  • 确认UITableView的delegate属性已正确关联到当前FirstViewController,可在didSelectRowAt方法内加断点验证点击时方法是否被触发,若方法未执行则是delegate未设置。
  • 检查ListViewController的自定义初始化方法是否存在异常,没有崩溃导致流程中断。

内容的提问来源于stack exchange,提问作者Allahverdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:30:01