SwiftUI - запуск других действий при нажатии NavigationLink - PullRequest
0 голосов
/ 07 ноября 2019

Я создаю представление списка с помощью кнопки в верхнем слое. Я хочу скрыть кнопку сразу же после того, как пользователь нажмет NavigationLink и не увидит ее в подробном представлении.

Я успешно реализую его с помощью @State var showAddButton и управляю им с помощью действий onDisappear и onAppear, как показано ниже, но кнопка не исчезнет, ​​если основной вид не исчезнет полностью.

Есть ли у кого-нибудь другое решение для запуска других действий и сохранения исходного действия ссылки 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()
            }
        }
    }

1 Ответ

0 голосов
/ 07 ноября 2019

Если вы хотите прикрепить эту кнопку к главному виду, вы можете изменить положение 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: {})}
    }
...