Как я могу удалить элемент из списка, используя лист?IOS

Программируем под IOS
Ответить
Anonymous
 Как я могу удалить элемент из списка, используя лист?

Сообщение Anonymous »

Я немного борюсь с тем, как управлять данными и держать все разделенным. У меня есть представление списка (его данные получают через HTTP -вызов), который может отображать лист для каждого элемента в списке. Из листа элемент может быть удален, это делается с помощью HTTP -запроса, и если это успешно, лист уволен. Я также не знаю, как удалить элемент из списка.

Код: Выделить всё

struct ContentView: View {
@State private var model = ContentViewModel()
@State private var selectedItem: Item?
@State private var showEditSheet = false

var body: some View {
NavigationStack {
List {
ForEach(model.items) { item in
Text(item.name)
.swipeActions {
Button("Edit") {
selectedItem = item
}
}
}
}
.onAppear {
Task {
model.fetchItems()
}
}
.sheet(item: $selectedItem) {
NavigationStack {
ItemEditView(item: item)
}
}
}
}
}
< /code>
struct EditItemView: View {
@Environment(\.dismiss) private var dismiss
@Bindable var item: Item

@State private var model = EditItemViewModel()

var body: some View {
// Functionality to edit the item omitted.

Button("Delete", role: .destructive) {
Task {
let deletedItem = await model.deleteItem(item)
if deletedItem {
dismiss()
}
}
}
}
}
Для меня наиболее очевидным решением было бы использовать одну модель и использовать ее для обоих представлений, передавая ее из ContentView в edititemview . Эта единственная модель будет иметь список (в настоящее время на ContentModelView ) и функцию Delete (в настоящее время на EdititeMViewModel ), удаление элемента из списка, если удаление будет успешным. Тем не менее, все советы, которые я читаю, заключается в том, что каждая точка зрения должна иметь свою собственную модель, и не должна распространяться ни одна модель между представлениями. Там EdititemView принимает дополнительное закрытие следа, которое содержит логику удаления, при этом содержимое закрытия определяется в ContentView . Моя проблема с этим решением состоит в том, что я не знаю, как проверить, была ли удаление успешной, поэтому я знаю, когда увольнять лист, а когда нет.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ng-a-sheet
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»