我在上层创建带有按钮的列表视图。我想在用户单击NavigationLink之后立即隐藏该按钮,而在详细视图中看不到它。

我通过使用@State var showAddButton成功实现了它,并通过如下所示的onDisappearonAppear动作对其进行控制,但是如果主视图没有完全消失,则按钮不会消失。

有谁有其他解决方案来触发其他动作并保留NavigationLink的原始链接动作?

@State var showAddButton = true

    var body: some View {

        ZStack{

            NavigationView{
                List{
                    ForEach(items, id: \.id){ item in
                        NavigationLink(destination: WorkItemDetailView(item: item)){
                            WorkItemListRow(item: item)
                        }.onDisappear{self.showAddButton = false}
                            .onAppear{self.showAddButton = true}

                    }
                }
                .navigationBarTitle("List", displayMode: .inline)
            }

            if showAddButton {
                FloatAddButton()
            }
        }
    }

最佳答案

如果要将该按钮粘贴到主视图,则可以切换ZStack的位置:

   NavigationView{
        ZStack{
        List{
            ForEach(items, id: \.self){ item in
                NavigationLink(destination: WorkItemDetailView(item: item)){
                    WorkItemListRow(item: item)
                }

            }

        }
        .navigationBarTitle("List", displayMode: .inline)
        Button("mybutton",action: {})}
    }

关于ios - SwiftUI-单击NavigationLink时触发其他操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58745300/

10-15 14:12