web-dev-qa-db-ja.com

リストのListStyleを変更する方法

SwiftUIではListListStyleというプロパティがあるようです。

リストのスタイルを変更するにはどうすればよいですか

_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のエラー

'>'は後置単項演算子ではありません

12
Mohmmad S

Appleは受け入れられた回答の列挙型の値を非推奨にしており、Xcode 11ベータ5以降は次のレイアウトに従う必要があります。

.listStyle(GroupedListStyle())

これが金になる前に、いくつかの変更が加えられることに注意してください。

利用可能なその他の値:

  • PlainListStyle

  • DefaultListStyle

16
CodeBender

Xcode Beta 5以降のアップデート

Xcode Beta 5以降、このアプローチは廃止されました。今Appleは、すべてのスタイルの構造体実装を作成しました。したがって、次のようにする必要があります:.listStyle(GroupedListStyle())。同じアプローチが、利用可能な他のスタイルにも適用されます。

プレベータ5の古い実装

.listStyle(.grouped)を実行するだけです。他のリストスタイルの使用

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

基本的にあなたは単にListStyle.groupedメソッドに、しかしSwift型推論のおかげで構造体を指定する必要はありません。すべての静的メンバーはこのように機能します。

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 }
}
8
Rico Crescenzio

xcode 11.2.1では、正しい答えは以下にあります。

.listStyle(GroupedListStyle())

Conforming Types  ->
CarouselListStyle
DefaultListStyle
GroupedListStyle
PlainListStyle
SidebarListStyle

ref: https://developer.Apple.com/documentation/swiftui/liststyle

1
Zgpeace