Действия лист в NavigationView, кажется, есть ошибка - PullRequest
0 голосов
/ 06 октября 2019

Я делаю несколько тестов. Если я просто сделаю кнопку, подобную этой:

Button(action: {
    self.showActionSheet = true
}) {
    Text("Click")
}.actionSheet(isPresented: $showActionSheet) {
    ActionSheet(title: Text("This is a test"))
}

Это работает!

Но если я введу ее в NavigationView, появится ошибка! ActionSheet появится снова, когда я нажму Cancel.

enter image description here

Ответы [ 2 ]

0 голосов
/ 09 октября 2019

Я размещаю свой вопрос на Swift Forum и получаю ответ.

https://forums.swift.org/t/actionsheet-and-modal-seems-have-bug-in-navigationview/29590

Если я поставлю ActionSheet или Modal за пределами NavigationView, он отлично работает!

0 голосов
/ 06 октября 2019

В SwiftUI представление является функцией состояния, поэтому, если ваш флаг, связанный с модальным, листом действий или появившимся предупреждением, не установлен в значение false, наложение будет продолжаться. Когда пользователь отклоняет лист действия, ваш ContentView перерисовывается и, поскольку showActionSheet все еще имеет значение true, он снова отображается.

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") }
...