Стили списка каруселей / боковых панелей в SwiftUI - PullRequest
2 голосов
/ 12 июня 2019

Есть два списка стилей, которые неактивны и не дают результата с SwiftUI.Попробуйте стили .carousel и .sidebar, чтобы понять это.

struct ContentView : View {

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

}

Это из-за беты (ошибки), или я что-то пропустил?Список не отображается на моем iPhone.

Ответы [ 2 ]

1 голос
/ 12 июня 2019

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
    }
}
1 голос
/ 12 июня 2019

Ты прав.

Похоже, что оба стиля .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 все еще находится в бета-версии, поэтому многие компоненты повреждены или отсутствуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...