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

Swift项目中如何创建无trigger="accessoryAction"属性的TableViewCell Segue

解决TableViewCell Segue未触发prepare函数的问题

你碰到的这个情况,本质是新Segue被绑定到了cell的accessory动作(比如点击cell右侧的 disclosure indicator 这类图标),而不是cell本身的选中事件,所以prepare函数没被正常调用,Storyboard XML里才会多出trigger="accessoryAction"属性。下面两种方法都能帮你创建不带这个属性的Segue:

方法1:直接从Cell主区域拖拽创建

  • 打开你的Storyboard,找到目标TableViewCell
  • 按住Control键,从cell的主体区域(别点右侧的accessory图标)拖拽到目标ViewController
  • 在弹出的选项里选择你需要的Segue类型(比如show)
  • 给这个Segue设置唯一的identifier(比如segueToSettingB)

这样创建的Segue,查看Storyboard源码时会和你之前的有效Segue格式一致:

<connections> 
  <segue destination="Zg7..." kind="show" identifier="segueToSettingB" id="7eW..."/> 
</connections>

方法2:手动在代理中触发Segue(更灵活)

如果需要在跳转前做一些逻辑判断,这种方式更合适:

  • 先选中TableView所在的ViewController,按住Control键拖拽到目标ViewController,创建一个Segue
  • 给这个Segue设置好identifier和类型
  • 在TableView的didSelectRowAt代理方法里,手动调用Segue:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "segueToSettingB", sender: indexPath)
}

这种方式完全不会生成trigger属性,还能自由控制跳转时机。

不管用哪种方法,创建完成后点击cell就能正常触发prepare函数了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:38:44