Как определить подтверждение adialog с помощью связующего элемента вместо представленного?IOS

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

Сообщение Anonymous »

Это то, что у меня есть, чтобы представить подтверждение, что нажимает: < /p>
extension View {
func confirmDeletion(isPresented: Binding, title: String? = nil, action: @escaping ()-> Void) -> some View {
confirmationDialog("", isPresented: isPresented) {
Button("delete", role: .destructive) { action() }
} message: {
Text(title)
}
}
}

И это работает отлично, но теперь мне нужно определить и назвать его базой на выбранном элементе из списка, а не только по переключению , поэтому я просто определил его так:
extension View {
// here is previous declaration
func confirmDeletion(item: Binding, title: String? = nil, action: @escaping (Item)-> Void) -> some View {
let binding = Binding {
item.wrappedValue != nil
} set: { _ in }

return confirmDeletion(isPresented: binding, title: title) { // call the previous declaration with overriden action
if let item = item.wrappedValue {
action(item)
}
}
}
}
< /code>
Но проблема в том, что он отображается только один раз. Когда я нажимаю на один и тот же PlanelementView в ряду, он не представляет диалог во второй раз. Почему? Когда я нажимаю на разные PlanelementView он работает.@State var selectedPlanForDeletion: Plan?

var body: some View {
VStack {
ForEach(plans) { plan in
PlanElementView(plan: plan)
.onTapGesture {
selectedPlanForDeletion = plan
}
}
}
.confirmDeletion(
item: $selectedPlanForDeletion,
title: "newTitle"
) { plan in
print(plan)
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... sented-one
Ответить

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

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

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

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

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