SwiftUI中如何通过ForEach实现TabView指定页面跳转?
实现列表跳转至Page样式TabView指定页面的方案
要实现点击列表选项直接跳转到PageView的指定页面,需要给TabView添加selection绑定,并为每个子视图设置对应tag,同时初始化时传入目标索引。修改后的代码如下:
修改后的PageView代码
struct PageView: View { @State private var selectedTab: Int // 初始化时接收传入的tag,设置初始选中的页面 init(tag: Int) { self._selectedTab = State(initialValue: tag) } var body: some View { // 将TabView的selection与selectedTab绑定 TabView(selection: $selectedTab) { ForEach(0..<5, id: \.self) { i in Text("\(i)") .tag(i) // 给每个页面设置对应的索引tag } } .tabViewStyle(.page(indexDisplayMode: .never)) } }
NavView代码保持不变
struct NavView: View { var body: some View { NavigationView { List { NavigationLink(destination: PageView(tag: 0)) { Text("0") } NavigationLink(destination: PageView(tag: 1)) { Text("1") } NavigationLink(destination: PageView(tag: 2)) { Text("2") } NavigationLink(destination: PageView(tag: 3)) { Text("3") } NavigationLink(destination: PageView(tag: 4)) { Text("4") } } } } }
关键说明
- 给TabView添加
selection: $selectedTab绑定,让它能响应选中状态的变化 - 每个子视图通过
.tag(i)标记自己的索引,和选中状态的变量对应 - 在PageView的初始化方法中,把传入的tag赋值给
selectedTab,实现跳转后直接定位到目标页面
内容的提问来源于stack exchange,提问作者user19914183
相关产品推荐
相关产品推荐

