В таблице действий в 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, работает отлично!

Другие вопросы по тегам