Нежелательный SplitView на модальном виде отображается на iPad - PullRequest
1 голос
/ 04 мая 2020

Тестируя мое первое приложение SwiftUI на iPad, я обнаружил, что модальные представления, которые я отображаю из моего ContentView, отображаются в виде разделенных видов на iPad, при этом пользовательский интерфейс усекается на главной стороне, а сторона сведений пуста.

Я проверил оба сообщения здесь:

Нежелательный SplitView и, Каково равенство контроллера UISplitView

Но их решение применить .navigationViewStyle(StackNavigationViewStyle) для NavigationView не работает для меня:

Я отображаю свои модалы с помощью пользовательского ввода (нажатие кнопки), используя следующий метод:
При нажатии кнопки значение Int равно передается в локальную переменную (modalViewCaller), а затем в функцию sheetContent().
Вот конец моего var body: some View и следующий sheetContent fun c:


              } // END of main VStack
                .sheet(isPresented: $isModalPresented, content: sheetContent)
} // END of body

// modalViewCaller is the Int var I set upon button tap

    @ViewBuilder func sheetContent() -> some View {
        if modalViewCaller == 1 {
            firstModalView()
        } else if modalViewCaller == 2 {
            secondModalView()
        } else if modalViewCaller == 3 {
            thirdModalView()
        } 
    } // END of func sheetContent

Затем в каждом из этих modalView я применяю модификатор .navigationViewStyle(StackNavigationViewStyle) к NavigationView, который инкапсулирует весь мой вид в var body: some View, но я получаю следующую ошибку: «Тип« StackNavigationViewStyle.Type »не может соответствовать« Navig » ationViewStyle '; только типы struct / enum / class могут соответствовать протоколам "

The error displayed

Вот конец моего NavigationView в модальных моделях:

} // End of VStack
                .navigationBarItems(
                    leading:
                    Button("Done") {
                        self.saveEdits()
                        self.presentationMode.wrappedValue.dismiss() // This dismisses the view
                    } // END of Button "Done"
                )
                .navigationBarTitle("Takeoff edition")

            } // END of Navigation View
            .navigationViewStyle(StackNavigationViewStyle)
            .onAppear { // assigned fetched event date, here it is available (was not in init())
            self.selectedDate = self.fetchedEvent.first?.eventDate ?? Date()
            }

        } // END of some View

Я полагаю, что решение было опубликовано, чтобы применить этот модификатор из ContentView NavigationView, но у меня его нет (и я не хочу его из-за потери всего пространства экрана поверх моего пользовательского интерфейса)

1 Ответ

2 голосов
/ 04 мая 2020

Вот исправление (оно должно быть построено, ie. StackNavigationViewStyle()):

} // END of Navigation View
.navigationViewStyle(StackNavigationViewStyle()) // << here !! 
...