Тестируя мое первое приложение 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 могут соответствовать протоколам "
Вот конец моего 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, но у меня его нет (и я не хочу его из-за потери всего пространства экрана поверх моего пользовательского интерфейса)