В таблице действий в NavigationView есть ошибка
Я провожу тесты. Если я просто сделаю такую кнопку:
Button(action: {
self.showActionSheet = true
}) {
Text("Click")
}.actionSheet(isPresented: $showActionSheet) {
ActionSheet(title: Text("This is a test"))
}
Оно работает!
Но если я вставлю это NavigationView
, ошибка появляется! ВActionSheet
появится снова, когда я нажму кнопку Cancel
.
2 ответа
В SwiftUI представление является функцией состояния, поэтому, если ваш флаг, связанный с модальным окном, листом действий или появившимся предупреждением, не установлен обратно на false, оверлей будет продолжать отображаться. Когда пользователь закрывает лист действий, ваш ContentView перерисовывается, и поскольку showActionSheet по-прежнему истинно, он снова отображается.
ActionSheet
.actionSheet(isPresented: $showActionSheet) {
ActionSheet(title: Text("This is a test"),
buttons: [ActionSheet.Button.cancel({
self.showActionSheet = false })])
}
Модальный
.sheet(item: $showModal,
onDismiss: {
self.showModal = false
}) { Text("Modal") }
Я размещаю свой вопрос на форуме Swift и получаю ответ.
https://forums.swift.org/t/actionsheet-and-modal-seems-have-bug-in-navigationview/29590
Если я поставлю ActionSheet
или Modal
вне NavigationView
, работает отлично!