SwiftUI 根据设备设置 navigationViewStyle

kej*_*ion 8 xcode ios swift swiftui

我试图让我的导航视图样式堆叠在 iPad 上,但在 iPhone 上默认。

代码:

.navigationViewStyle(UIDevice.current.userInterfaceIdiom == .pad ? StackNavigationViewStyle() : DefaultNavigationViewStyle())
Run Code Online (Sandbox Code Playgroud)

给我错误:

'? 中的结果值 :' 表达式具有不匹配的类型 'StackNavigationViewStyle' 和 'DefaultNavigationViewStyle'

这些不是 NavigationViewStyle 的子类吗?

Asp*_*eri 7

我建议将它提取到简单的包装器修饰符中,并在需要的地方使用它。这里是修改器:

extension View {
    public func currentDeviceNavigationViewStyle() -> AnyView {
        if UIDevice.current.userInterfaceIdiom == .pad {
            return AnyView(self.navigationViewStyle(StackNavigationViewStyle()))
        } else {
            return AnyView(self.navigationViewStyle(DefaultNavigationViewStyle()))
        }
    }
}
Run Code Online (Sandbox Code Playgroud)