簡體   English   中英

點擊時從列表中刪除 SwiftUI

[英]Delete From List When Tapped SwiftUI

點擊項目時,我想從列表中刪除項目。 當我刪除其中一個單元格時,單元格抽頭指示器的所有 rest 都顯示它們也被點擊了。

另外,它不會刪除它只是使其暫時不可見。 當我重新加載頁面時,刪除的單元格再次位於 memory 中並且再次可見。

List{
                ForEach(list.reminders, id: \.self) { reminder in
                    Button(action: {
                        self.isSelected.toggle()
                        self.delete(at: list.reminders.firstIndex(where: {$0.hashValue == reminder.hashValue})!)
                    }, label: {
                        HStack{
                            Image(systemName: isSelected ? "largecircle.fill.circle" : "circle")
                                .resizable()
                                .aspectRatio(contentMode: .fit)
                                .foregroundColor((isSelected ? Color(list.color) : .gray))
                                .frame(width: 22, height: 22, alignment: .trailing)
                                .cornerRadius(22)
                            ReminderCell(reminder: reminder)
                        }
                    })
                    .padding(.bottom)
                }.onDelete(perform: deleteReminder)
            }

func deleteReminder(at offsets: IndexSet) {
    list.reminders.remove(atOffsets: offsets)
}
func delete(at index: Int) {
    list.reminders.remove(at: index)
}

首先,如果你想讓.onTapGesture {}中的 function 工作,你必須把它放在 Button label 之外,因為當你點擊它時,ZC1C425268E68385D1AB5074C14Z 的動作會被觸發。

其次,如果要獲取 ForEach 中元素的索引,則必須添加indices 在下面檢查我的代碼,因為您沒有完全發布您的代碼,我無法准確測試我的代碼。

        List {
            ForEach(list.reminders.indices, id: \.self) { index in
                HStack {
                    Button(action: {
                        self.isSelected.toggle()
                    }, label: {
                        Image(systemName: isSelected ? "largecircle.fill.circle" : "circle")
                            .resizable()
                            .aspectRatio(contentMode: .fit)
                            .foregroundColor((isSelected ? Color(list.color) : .gray))
                            .frame(width: 22, height: 22, alignment: .trailing)
                            .cornerRadius(22)
                    })
                    Button(action: {
                        deleteReminder(at: IndexSet(integer: index))
                    }) {
                        ReminderCell(reminder: list.reminders[index])
                    }
                }
                .padding(.bottom)
            }.onDelete(perform: deleteReminder)
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM