单击列表行中的 NavigationLink 后无法弹出到根视图

时间:2021-01-04 04:06:16

标签: swiftui swiftui-list swiftui-navigationlink

我对 SwiftUI 有点陌生,当单击列表中的 NavigationLink 时,我很难成功弹出到根控制器。我正在遵循此 other post 中演示的方法。我可以让这个实现在我项目的其他地方工作,但是当涉及到 List 时它有点棘手。

设置为:ListView包含List和RowView。单击 RowView 中的 NavigationLink 转至 View 2。发生的事情是,当我单击 NavigationLink 时,如果列表中有 X 行,它会转 X 次。我假设通过单击 NavigationLink,我将绑定 bool 切换为 true,因此所有 NavigationLink 都被激活。

 struct RowView : View {
    
    @Binding var rootIsActive : Bool
    var body: some View {
        VStack() {
            let view2 = View2(shouldPopToRootView: $rootIsActive)
            HStack() {
                NavigationLink(destination: view2, isActive: $rootIsActive, label: {Text("Go to view 2")}).isDetailLink(false)
                    .background(Color.purple)
                // Additional UI stuff
            }
            .frame(height:50)
        }
    }
}

 struct ListView: View {

    @State var isActive : Bool = false
    var someItems: [SomeObj] = []

    var body: some View {
        NavigationView {
            VStack() {
                // Other UI stuff
                List {
                    ForEach(self.someItems) { item in
                        Section(header: RowView(rootIsActive: $isActive).onTapGesture {
                            // debug code
                        })
                    }
                }
            }
        }
    }
}

struct View2: View {
        
    @Binding var shouldPopToRootView : Bool
    
    var body: some View {
        ZStack() {
            //UI Stuff
        }
        .navigationBarItems(trailing: Button(action: {
            // Pop to root
            self.shouldPopToRootView = false
        }, label: {
            Text("Save")
        }))
    }
}

0 个答案:

没有答案