Carousel/sidebar SwiftUI 中的列表样式

Carousel/sidebar list styles in SwiftUI

有两种列表样式处于非活动状态并且不会在 SwiftUI 中产生任何结果。尝试使用 .carousel.sidebar 样式来解决问题。

struct ContentView : View {

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

}

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

你是对的。

看起来 .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 is still in beta, hence a lot of components are broken or missing.

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

这是 sidebar-style 列表在 macOS 上 运行 时的样子:

展开:

已折叠:

这是代码(尽管我不确定 Range 的实例或任何其他 one-dimensional 序列的实例是否适合此样式):

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
    }
}

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

这样试试:

.listStyle(CarouselListStyle())