TabView resets navigation stack when switching tabs

前端 未结 3 1307
忘掉有多难
忘掉有多难 2020-11-29 20:24

I have a simple TabView:

TabView {
    NavigationView {
        VStack {
            NavigationLink(destination: T         


        
3条回答
  •  -上瘾入骨i
    2020-11-29 21:17

    Here's a simple example of how to preserve state for a navigation stack with a list of items at the root:

    struct ContentView: View {
    
        var body: some View {
    
            TabView {
    
                Text("First tab")
                    .tabItem { Image(systemName: "1.square.fill"); Text("First") }
                    .tag(0)
    
                SecondTabView()
                    .tabItem { Image(systemName: "2.square.fill"); Text("Second") }
                    .tag(1)
            }
        }
    }
    
    struct SecondTabView: View {
    
        private struct ListItem: Identifiable {
            var id = UUID()
            let title: String
        }
    
        private let items = (1...10).map { ListItem(title: "Item #\($0)") }
    
        @State var selectedItemIndex: Int? = nil
    
        var body: some View {
    
            NavigationView {
                List(self.items.indices) { index in
                    NavigationLink(destination:  Text(self.items[index].title),
                                   tag: index,
                                   selection: self.$selectedItemIndex) {
                        Text(self.items[index].title)
                    }
                }
                .navigationBarTitle("Second tab", displayMode: .inline)
            }
        }
    }
    

提交回复
热议问题