I'm trying to get my navigation view style to be stacked on iPad but default on iPhone.
Code:
.navigationViewStyle(UIDevice.current.userInterfaceIdiom == .pad ? StackNavigationViewStyle() : DefaultNavigationViewStyle())
Giving me the error:
Result values in '? :' expression have mismatching types 'StackNavigationViewStyle' and 'DefaultNavigationViewStyle'
Are these not both NavigationViewStyle subclasses?
I recommend to extract it into simple wrapper modifier and use it in place where needed. Here is modifier:
extension View {
@ViewBuilder
public func currentDeviceNavigationViewStyle() -> some View {
if UIDevice.current.userInterfaceIdiom == .pad {
self.navigationViewStyle(StackNavigationViewStyle())
} else {
self.navigationViewStyle(DefaultNavigationViewStyle())
}
}
}
extension View {
public func currentDeviceNavigationViewStyle() -> AnyView {
if UIDevice.current.userInterfaceIdiom == .pad {
return AnyView(self.navigationViewStyle(StackNavigationViewStyle()))
} else {
return AnyView(self.navigationViewStyle(DefaultNavigationViewStyle()))
}
}
}