Ios SwiftUI在NavigationViewStyles之间切换
我想将列表的嵌套列表显示为树或网格。虽然苹果树在iPad的分割视图中看起来不错,但网格太大了,无法容纳 因此,我希望在网格显示模式下使用Ios SwiftUI在NavigationViewStyles之间切换,ios,swift,swiftui,uikit,Ios,Swift,Swiftui,Uikit,我想将列表的嵌套列表显示为树或网格。虽然苹果树在iPad的分割视图中看起来不错,但网格太大了,无法容纳 因此,我希望在网格显示模式下使用StackNavigationViewStyle和在树显示模式下使用DefaultNavigationViewStyle呈现此视图 我有一个切换开关showList来存储模式,我想使用at切换到导航视图样式,如下所示: .navigationViewStyle(self.showList ? DefaultNavigationViewStyle() : Stac
StackNavigationViewStyle
和在树显示模式下使用DefaultNavigationViewStyle
呈现此视图
我有一个切换开关showList
来存储模式,我想使用at切换到导航视图样式,如下所示:
.navigationViewStyle(self.showList ? DefaultNavigationViewStyle() : StackNavigationViewStyle())
但编译器抱怨说:
“?:”中的结果值表达式具有不匹配的类型
“DefaultNavigationViewStyle”和“StackNavigationViewStyle”
即使两者都继承自NavigationViewStyle
甚至可以在导航视图样式之间切换吗?或者,一旦我选择了一种样式,我就必须在该视图中使用它?您不能在
导航视图样式
修改器中使用三元运算符,因为样式有不同的类型,但您可以使用如下自定义修改器
extension NavigationView {
@ViewBuilder
func switchStyle(if flag: Bool) -> some View {
if flag {
self.navigationViewStyle(DefaultNavigationViewStyle())
} else {
self.navigationViewStyle(StackNavigationViewStyle())
}
}
}