Saya memiliki aplikasi latihan kecil yang saya buat untuk mempelajari SwiftUI, dan saya dapat membuat daftar tugas di CoreData dan menandainya sebagai selesai yang menyetel isComplete menjadi true dan mengubah gambar dari lingkaran kosong menjadi tanda centang.

List {
    ForEach(taskItems, id: \.self) { item in
        HStack {
            if item.isComplete == true {
                Image(systemName: "checkmark.circle.fill").padding(5.0).foregroundColor(/*@START_MENU_TOKEN@*/.blue/*@END_MENU_TOKEN@*/).font(.system(size: 24))
                .onTapGesture {
                    item.isComplete.toggle()
                    self.saveTasks()
                }
            } else {
                Image(systemName: "circle").padding(5.0).foregroundColor(/*@START_MENU_TOKEN@*/.blue/*@END_MENU_TOKEN@*/).font(.system(size: 24))
                .onTapGesture {
                    item.isComplete.toggle()
                    self.saveTasks()
                }
            }
            Text("\(item.title)")
        }
        .padding(.vertical, 5.0)
    }
    .onDelete(perform: deleteTask)
}

Namun, saya ingin item ini dihapus dari daftar setelah pengguna meninggalkan tampilan (seperti aplikasi pengingat iOS asli). Saya memiliki baris kode dalam permintaan pengambilan saya yang menghapus item dari daftar, tetapi segera menghapusnya.

@FetchRequest(
    entity: TaskItem.entity(),
    sortDescriptors: [NSSortDescriptor(keyPath: \TaskItem.order, ascending: false)]
    predicate: NSPredicate(format: "isComplete == %@", NSNumber(value: false))
) var taskItems: FetchedResults<TaskItem>

Saat mengetuk gambar item, bagaimana saya bisa menandai item sebagai selesai tetapi hanya menghapus item daftar setelah pengguna meninggalkan tampilan atau aplikasi? Terimakasih banyak!

UI Aplikasi

2
Dale Humphries 6 Juli 2020, 04:39

1 menjawab

Jawaban Terbaik

Pada tampilan orang tua tertinggi Anda misalnya jika orang tua Anda yang lebih tinggi adalah Vstack maka gunakan

body {
VStack {
}
.onDisappear {
//perform removal of items
}
}
 

                   }
1
Reed 6 Juli 2020, 11:23