ios - 离开 View 时删除完成时的列表项

标签 ios swift swiftui

我正在构建一个用于学习 SwiftUI 的小型待办事项应用程序,我可以在 CoreData 中创建一个任务列表并将它们标记为完成,这会将 isComplete 设置为 true 并将图像从空圆圈更改为复选标记。

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)
}
但是,我希望在用户离开 View 后将这些项目从列表中删除(如原生 iOS 提醒应用程序)。我的获取请求中有一行代码确实从列表中删除了项目,但它会立即删除它们。
@FetchRequest(
    entity: TaskItem.entity(),
    sortDescriptors: [NSSortDescriptor(keyPath: \TaskItem.order, ascending: false)]
    predicate: NSPredicate(format: "isComplete == %@", NSNumber(value: false))
) var taskItems: FetchedResults<TaskItem>
在点击项目图像时,如何将项目标记为完成,但仅在用户离开 View 或应用程序后才删除列表项?非常感谢!
App UI

最佳答案

例如,如果您的上级父级是 Vstack,则在您的最高父级 View 上使用

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

                   }

关于ios - 离开 View 时删除完成时的列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62748120/

相关文章:

SwiftUI:如果在 ScrollView 中滚动,则禁用按钮选择

android - 在 iOS 设备上安全存储个人用户数据

swift - 对闭包中属性的引用需要显式 'self.' 以使捕获语义显式

ios - -[UIApplication _runWithMainScene :transitionContext:completion:] 中的断言失败

ios - 如何使用Swift 4解决Tableview数据数组 "Out of range values"?

ios - 观察者使用 removeAllObervers 多次触发

swiftui - 为什么即使 View 中有空间,添加间隔符也会截断文本?

ios - 关闭工作表后SwiftUI重新加载 View

ios - 使用 AVAudioEngine 进行电平测量

ios - 从具有最大匹配的另一个字符串中查找字符串模式(存储在数组中)