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
プロトコルの適合当事者は
しかし、私はこのようにそれを使用してリストの新しいスタイルを設定しようと苦労しています
_.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のエラー
'>'は後置単項演算子ではありません
Appleは受け入れられた回答の列挙型の値を非推奨にしており、Xcode 11ベータ5以降は次のレイアウトに従う必要があります。
.listStyle(GroupedListStyle())
これが金になる前に、いくつかの変更が加えられることに注意してください。
利用可能なその他の値:
PlainListStyle
DefaultListStyle
Xcode Beta 5以降、このアプローチは廃止されました。今Appleは、すべてのスタイルの構造体実装を作成しました。したがって、次のようにする必要があります:.listStyle(GroupedListStyle())
。同じアプローチが、利用可能な他のスタイルにも適用されます。
.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 }
}
xcode 11.2.1では、正しい答えは以下にあります。
.listStyle(GroupedListStyle())
Conforming Types ->
CarouselListStyle
DefaultListStyle
GroupedListStyle
PlainListStyle
SidebarListStyle
ref: https://developer.Apple.com/documentation/swiftui/liststyle