SwiftUI中的轮播/边栏列表样式

时间:2019-06-12 15:27:12

标签: swift list swiftui

有两种无效的列表样式,而SwiftUI不会产生任何结果。尝试使用.carousel.sidebar样式来找出答案。

struct ContentView : View {

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

}

这是由于beta(错误)引起的,还是我错过了某些事情?该列表没有出现在我的iPhone上。

3 个答案:

答案 0 :(得分:3)

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

尝试一下:

.listStyle(CarouselListStyle())

答案 1 :(得分:1)

你是对的。

.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仍处于测试阶段,因此很多组件损坏或丢失。

答案 2 :(得分:1)

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

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

展开:

Expanded

崩溃:

Collapsed

这是代码(尽管我不确定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
    }
}