0
NavigationView {
            List{
                ForEach(self.data.firebaseObj.lists, id: \.self) { item in
                    NavigationLink(
                        destination: DetailView(
                            list: item,
                            listIndex: self.data.firebaseObj.lists.firstIndex(of: item) ?? -1
                        ).environmentObject(self.data)
                    ){
                        Text(item.name)
                    }
                }
                .onDelete(perform: delete)
            }
            .navigationBarTitle(Text("Le liste").font(.largeTitle), displayMode: .inline)
            .navigationBarItems(
                leading: SignOutButton(),
                trailing: Button(action: {
                    self.show_modal = true
                }) {Image(systemName: "plus")}.sheet(isPresented: self.$show_modal) {
                    AddListForm(email: self.session.session!.email!).environmentObject(self.data)
            })
        }.onAppear(
            perform:{
                self.data.createList(username: self.session.session!.email!)

            })
        .onDisappear(
            perform: {
                self.data.listener.remove()
                print("should be removed")
            }) 

それが私が持っているコードで、タイトルに書かれているように、NavigationLink をクリックしても .onDisappear() メソッドはトリガーされません。代わりに、別のタブ ビューに変更しても問題なく動作します。私は何か間違ったことをしていますか、それともこれが本来のやり方ですか? 2 番目のケースで、NavigationLink をクリックしたときにコードを実行する簡単な方法はありますか?

4

1 に答える 1