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

SwiftUI中PageTabView滑动切换时如何在ForEach单元格间传递数据

实现方案

你之前无法回传数据的核心原因是子单元格自行持有分数状态,没有和上层的全局数据源绑定,滑动页面切换子组件后状态就会重置,按照以下逻辑实现即可解决:

  • 首先创建可观察状态管理器,负责存储全局分数数据:
    定义符合ObservableObject协议的GameScoreViewModel,内部用@Published修饰存储所有球洞分数的数组、当前选中的球洞索引、标记游戏是否完成的布尔值。
  • 上层PlayTabView用@StateObject初始化上述视图模型,遍历生成球洞页面时,将对应下标位置的分数以@Binding的形式传入PlayPlayerCell组件。
  • 子组件PlayPlayerCell仅需要声明@Binding var currentHoleScore: Int属性,用户输入分数时直接修改该绑定值,改动会自动同步到上层的视图模型中,切换页面时数据不会丢失。
  • 监听PageTabView的selection属性变化,当选中索引等于最后一个球洞的下标,且对应分数已录入时,触发跳转逻辑,通过NavigationLink或者sheet将完整的分数数组传入记分板视图即可。

球洞分数录入界面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:42:01