в Swiftui, как предотвратить изменение состояния основного представления при отображении модального - PullRequest
0 голосов
/ 13 июля 2020

В моем представлении содержимого есть NavigationView, а также несколько подпредставлений, которые правильно отображаются до и после отображения модального окна. Я также показываю диаграмму с поворотом в альбомную ориентацию.

Проблема, с которой я сталкиваюсь, заключается в том, что я показываю свои настройки в модальном режиме, а пользователь поворачивает его вбок, а затем обратно. Я ожидаю, что настройки продолжат отображаться (с учетом ландшафта view), а базовое представление останется прежним, когда я закрою настройки.

Я вижу ошибку в том, что ContentView NavigationView, похоже, не имеет связи с предыдущим стеком навигации, и моя панель навигации и заголовок возвращаются изменено.

var body: some View {
    Group {
            if orientation.isLandScape, !isShowingSettingsView {
                GraphView()
            } else {
                NavigationView {
                    ZStack (alignment: .topTrailing){
                        VStack() {
                            ResultsView()
                            MultiPicker()
                                .frame(height: 250)
                            TabBarView
                        }
                    }
                    .navigationBarTitle("App Title")
                }
            }
        }

Настройки запускаются из TabBarView

private var TabBarView: some View {
    HStack{
        Button(action: {
            self.isShowingSettingsView = true
        }) {
            Image(systemName: "slider.horizontal.3")
                .font(Font.system(.title))
        }.sheet(isPresented: $isShowingSettingsView, onDismiss: {self.isShowingSettingsView = false})
        {
            SettingsView(isPresented: self.$isShowingSettingsView )
                .environmentObject(self.state)
                .environmentObject(self.orientation)
        }

Есть ли способ «приостановить» обновления в Contentview до тех пор, пока настройки не будут закрыты, или есть причина, по которой мой Стек навигации ломается при изменении ориентации?

Спасибо за помощь!

Изменить: вот репо, демонстрирующее проблему https://github.com/wassupdoc/RotationApp

...