Это то, что у меня есть, чтобы представить подтверждение, что нажимает: < /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
Как определить подтверждение adialog с помощью связующего элемента вместо представленного? ⇐ IOS
Программируем под IOS
1757529600
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)
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79749400/how-to-define-confirmationdialog-with-binding-item-instead-of-ispresented-one[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия