Как изменить ListStyle в List - PullRequest
3 голосов
/ 06 июня 2019

В SwiftUI List Появляется свойство с именем ListStyle.

Как мне изменить стиль списка

struct ListView : View {
var body: some View {
    NavigationView {
    List(Item.create().identified(by: \.id)){ row in
        NavigationButton(destination: DetailsView(item: row)) {
            RowView(item: row)
        }
    }
    .listStyle(StaticMember<PlainListStyle.Member>.self) // error here
    .foregroundColor(.red)
    .navigationBarTitle(Text("List View"))
    .statusBar(hidden: false)
    }
  }
}

Соответствующими сторонами протокола ListStyle являются

  1. CarouselListStyle
  2. DefaultListStyle
  3. GroupedListStyle
  4. PlainListStyle
  5. SidebarListStyle

Однако я изо всех сил пытаюсь установить новый стиль для списка используя это так

.listStyle(StaticMember<PlainListStyle.Member>.self)

Я пробовал так много способов, но каждый стиль, подтверждающий ListStyle, является структурой, как будто они не перечислили значения

У кого-нибудь есть идеи, как изменить стиль List?

Ошибка в Xcode

Невозможно преобразовать значение типа «StaticMember.Type» (он же «StaticMember> .Type») в ожидаемый тип аргумента «StaticMember <_> '

.

Использование: .listStyle(StaticMember<PlainListStyle.Member>)

Ошибка в Xcode

Невозможно преобразовать значение типа '(StaticMember) .Type' (он же «StaticMember> .Type») в ожидаемый тип аргумента «StaticMember <_> '

Использование: .listStyle(StaticMember<PlainListStyle()>) или .listStyle(StaticMember<PlainListStyle.self>)

Ошибка в Xcode

'>' не является постфиксным унарным оператором

1 Ответ

5 голосов
/ 06 июня 2019

Просто сделай .listStyle(.grouped). Для другого стиля списка используйте

  • .carousel
  • .default
  • .plain
  • .sidebar

По сути, вы просто передаете ListStyle.grouped методу, но благодаря быстрому выводу типа вам не нужно указывать структуру. Каждый статический член работает таким образом.

StaticMember означает, что в протоколе ListStyle есть статический член. Декларация такая.

extension StaticMember where Base : ListStyle {

    /// A `ListStyle` that implements the system default grouped `List`
    /// interaction and appearance.
    public static var grouped: GroupedListStyle.Member { get }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...