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

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))
    }
}
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")
                }
            }
        }
    }
}

关键说明

  1. 给TabView添加selection: $selectedTab绑定,让它能响应选中状态的变化
  2. 每个子视图通过.tag(i)标记自己的索引,和选中状态的变量对应
  3. 在PageView的初始化方法中,把传入的tag赋值给selectedTab,实现跳转后直接定位到目标页面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:20:36