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 をクリックしたときにコードを実行する簡単な方法はありますか?