【问题标题】:SwiftUI switch between NavigationViewStylesSwiftUI 在 NavigationViewStyles 之间切换
【发布时间】:2021-03-09 08:23:45
【问题描述】:

我想将列表的嵌套列表呈现为树或网格。虽然树在 iPad 上的拆分视图中看起来不错,但网格太大而无法容纳。

因此,我想在网格显示模式下使用StackNavigationViewStyle 呈现此视图,在树形显示模式下使用DefaultNavigationViewStyle

我有一个切换 showList 来存储模式,我想使用 at 如下切换到导航视图样式:

.navigationViewStyle(self.showList ? DefaultNavigationViewStyle() : StackNavigationViewStyle())

但编译器抱怨:

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

即使两者都继承自 NavigationViewStyle

甚至可以在导航视图样式之间切换,还是一旦我选择了一个我就必须在该视图中坚持它?

【问题讨论】:

    标签: ios swift swiftui uikit


    【解决方案1】:

    你不能在navigationViewStyle修饰符中使用三元运算符,因为样式有不同的类型,但是你可以像下面这样使用自定义修饰符

    extension NavigationView {
        @ViewBuilder
        func switchStyle(if flag: Bool) -> some View {
            if flag {
                self.navigationViewStyle(DefaultNavigationViewStyle())
            } else {
                self.navigationViewStyle(StackNavigationViewStyle())
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 2020-03-27
      • 2020-01-05
      • 1970-01-01
      • 2011-09-07
      相关资源
      最近更新 更多