Как представить предупреждение из пользовательского представления внутри меню в SwiftuiIOS

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

Сообщение Anonymous »

Я пытаюсь создать многоразовую кнопку в Swiftui, которая представляет предупреждение при постуке. Он работает отлично, когда используется непосредственно в иерархии представления, но не может представить оповещение при использовании в меню .
Вот пример:

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

struct ContentView: View {
var body: some View {
HStack(spacing: 30) {
Menu("Open Menu") {
// This does not work.
DeleteButton("Delete", message: "Are you sure you want to delete this?") {
print("Deleted")
}
}

// This works.
DeleteButton("Delete", message: "Are you sure you want to delete this?") {
print("Deleted")
}
}
}
}

struct DeleteButton: View {

var title: String
var message: String
var action: () -> Void

@State private var showAlert = false

init(_ title: String, message: String, action: @escaping () -> Void) {
self.title = title
self.message = message
self.action = action
}

var body: some View {
Button(title, systemImage: "trash", role: .destructive) {
showAlert = true
}
.alert("Delete Confirmation", isPresented: $showAlert) {
Button("Delete", role: .destructive, action: action)
Button("Cancel", role: .cancel) { }
} message: {
Text(message)
}
}
}
Deletebutton работает за пределами меню , однако тот же DeleteButton не показывает предупреждение, когда помещается в меню .
В идеале я хотел бы сохранить логику предупреждения внутри Deletebutton и все еще работать внутри в меню. Как я могу это сделать?

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

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

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

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

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

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