SwiftUI TabView 在每次点击时设置默认页面

SwiftUI TabView set default page on each tap

我是 SwiftUI 的新手,我正在尝试了解如何设置保持不变的 TabView 的默认页面

我的 TabView 嵌套在 ListView 中,我设置了 @State private var selection = 1,当应用程序首次启动并且 TabView 按预期在第 1 页打开时工作正常。

但是,如果用户滑动到另一个选项卡,然后点击后退按钮 return 到 ListView,下次他们打开选项卡视图时,它会从他们上一个选项卡开始, 而不是选项卡 1

这是我的 ListView,其中嵌套了 TabView

import SwiftUI

struct Exercises: View {
    
    @Environment(\.managedObjectContext) var managedObjectContext

    var muscleGroup: String
    
    //set initial exercise page to show
    @State private var selection = 1

    @FetchRequest var exercises: FetchedResults<WatchMainExercises>

    init(muscleGroup: String) {
        self.muscleGroup = muscleGroup
        self._exercises = FetchRequest(
            entity: WatchMainExercises.entity(),
            sortDescriptors: [NSSortDescriptor(key: "name", ascending: true)],
            predicate: NSPredicate(format: "\(muscleGroup.lowercased()) == 1")
        )
    }
      
    var body: some View {
        
        
        List(exercises){ exercise in
            
            NavigationLink(destination:
                            
                TabView(selection: $selection) {
                Exercise_Sets(exercise: exercise)
                    .tag(0)
                    .navigationTitle(Text("Close"))
                Exercise_Animation(exercise: exercise)
                    .tag(1)
                    .navigationTitle(Text("Close"))
                Exercise_Info(exercise: exercise)
                    .tag(2)
                    .navigationTitle(Text("Close"))
                }
                .tabViewStyle(.page)
            
                .environment(\.managedObjectContext, self.managedObjectContext)) {
                    
                    ExerciseCell(name: exercise.name!, image: exercise.ensemblesID!, tintColor: DataHelper.checkDifficulty(record: exercise), exercise: exercise)
                       
                }
                .navigationTitle("Exercises")
                .navigationBarTitleDisplayMode(.inline)
              
          
        }
    }
}

目前,标签页只是将练习对象作为参数的空白结构

每次用户从 TabView 返回时,我如何将初始 TabView 设置为第 1 页,或者是否有设置恒定初始标签页的方法

我花了很长时间寻找类似的问题,但找不到任何解决问题的方法

如有任何帮助,我们将不胜感激

提前致谢

您可以在 TabView 上调用 onAppear 以在每次视图出现时设置所需的标签。

TabView(selection: $selection) {
    // your pages...
}
.onAppear {
    selection = 1
}