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
相关产品推荐
相关产品推荐

