【问题标题】:Carousel/sidebar list styles in SwiftUISwiftUI 中的轮播/侧边栏列表样式
【发布时间】:2019-10-27 04:11:13
【问题描述】:

有两种列表样式是不活动的,并且在 SwiftUI 中不会产生任何结果。试试.carousel.sidebar 样式来解决这个问题。

struct ContentView : View {

    var body: some View {
        List {
            Text("Hello")
        }
        .listStyle(.carousel) // Or .sidebar
    }

}

这是由于测试版(错误),还是我错过了什么?该列表没有出现在我的 iPhone 上。

【问题讨论】:

  • 我更新了帖子。此列表已添加到我的主视图中。
  • @BenjaminPisano 没有必要在视图控制器中显示 - 我们在 SwiftUI 上
  • @DoesData 停止讨论视图控制器,并尝试阅读一个简单的 SwiftUI 教程

标签: swift list swiftui


【解决方案1】:

就像其他人指出的那样,语法正在发生变化。

试试这个方法:

.listStyle(CarouselListStyle())

【讨论】:

    【解决方案2】:

    你是对的。

    看起来.carousel.sidebar 样式在 iOS 上都不起作用/未实现。

    这是我的演示代码:

    struct ContentView : View {
    
        @State var alternateStyle = false
    
        var body: some View {
            var list  =
            AnyView(List(0...100) { item in
                Text("\(item)").tapAction { self.alternateStyle.toggle() }
            }
            .navigationBarTitle(Text("A List")))
            if alternateStyle {
                list = AnyView(list.listStyle(.carousel))
            } else {
                list = AnyView(list.listStyle(.default))
            }
            return list
        }
    
    }
    

    如果你点击Text,从而交换样式,你会得到一个空白列表。

    SwiftUI 仍处于测试阶段,因此很多组件已损坏或丢失。

    【讨论】:

    • 嗯似乎工作正常,但我个人并不热衷于所有这些AnyViews
    【解决方案3】:

    SidebarListStyle 仅适用于 macOS,因为 CarouselListStyle 仅适用于 watchOS。

    这是在 macOS 上运行时侧边栏样式列表的样子:

    展开:

    折叠:

    这是代码(虽然我不确定 Range 的实例或任何其他一维序列是否适合这种风格):

    struct ContentView : View {
        var body: some View {
            List (0..<10) { number in
                self.view(forNumber: number)
                }
                .listStyle(.sidebar)
        }
    
        func view(forNumber number: Int) -> some View {
            print("number == \(number)")
            let ret = Text("#\(number)")
                .foregroundColor(.blue)
            return ret
        }
    }
    

    【讨论】:

    • 好的,iOS 上有一个错误。我不知道正确的行为应该是什么,但我希望这两种样式都能在 iPhone 上显示标准列表。
    • 我认为这不是 iOS 错误——这些样式根本不适合 iOS。但奇怪的是 Xcode 没有将在错误平台上使用这些作为错误报告。
    • 也许吧,但这很奇怪,因为 SwiftUI 没有特定于平台的 UI 元素。 SwiftUI 真正做的唯一区别是如何处理不同的平台输入。这是我在 SwiftUI 中看到的第一个特定于 UI 的差异。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    相关资源
    最近更新 更多