Как отключить .OnDelete — или как использовать .deleteDisabled для каждой строки в списке?

#ios #arrays #swiftui #swiftui-list

#iOS #массивы #swiftui #swiftui-список

Вопрос:

Я пытаюсь отключить удаление строк в списке для каждой строки на основе Bool из элемента core data. Цель состоит в том, чтобы разрешить удалять только те элементы списка, которые были отмечены как оплаченные. Хотя я могу заставить свою функцию удаления удалять только «платные» элементы, пользователь все равно сможет визуально перейти к удалению, и я хочу это удалить.

У меня есть список с forEach из Core Data. Я использую .OnDelete с функцией удаления, которая работает нормально. Я пытаюсь использовать .deleteDisabled, но я не могу заставить его использовать bool из Core Data. Я могу заставить его включить или отключить удаление для всех строк одновременно.

Любой способ сделать это, надеюсь, без UIKit?

Комментарии:

1. OnDelete не может быть динамически размещен в элементе. Возможно, вам придется проверить это в вашем действии удаления.

Ответ №1:

мои 2 цента за Xcode 12:

 ....

 List () {
      ForEach(self.items) { item in 
           let disabled = item.protected // ANY attribute of struct item
           MyFileCell(file: file) // ANY swift elements.. Text()....
           .deleteDisabled(disabled)
       }
       .onDelete(perform: delete)
  } // end of list