web-dev-qa-db-ja.com

SwiftUIのリストから「行」セパレータを削除するにはどうすればよいですか?

私はSwiftUIのListから「行」セパレーターを削除しようとしています。

Listのドキュメントを調べましたが、その修飾子を見つけることができませんでした。

任意の助けいただければ幸いです。

24
Schiopu Evgheni

ForEachの代わりにScrollView内でListを使用して、スタイルのない動的ビューに使用できます。

9
Rico Crescenzio

IOS向けのSwiftUIのUITableViewの後ろにはListがあります。だから削除する

追加のセパレーター(リストの下):

tableFooterViewが必要で、削除するには

すべてのセパレーター(実際のセパレーターを含む):

separatorStyle.noneである必要があります

init() {
    // To remove only extra separators below the list:
    UITableView.appearance().tableFooterView = UIView()

    // To remove all separators including the actual ones:
    UITableView.appearance().separatorStyle = .none
}

var body: some View {
    List {
        Text("Item 1")
        Text("Item 2")
        Text("Item 3")
    }
}
7

このソリューションは正しく動作しますが、ViewModifierを使用して作業をクリーンアップしましょう

public struct ListSeparatorStyleNoneModifier: ViewModifier {
    public func body(content: Content) -> some View {
        content.onAppear {
            UITableView.appearance().separatorStyle = .none
        }.onDisappear {
            UITableView.appearance().separatorStyle = .singleLine
        }
    }
}

次に、詳細を非表示にするのに役立つ小さな拡張機能を作成しましょう

extension View {
    public func listSeparatorStyleNone() -> some View {
        modifier(ListSeparatorStyleNoneModifier())
    }
}

ご覧のとおり、外観設定コードをきちんとした小さなビュー修飾子にラップしました。あなたは今それを直接宣言することができます

List {
    Text("1")
    Text("2")
    Text("3")
}.listSeparatorStyleNone()
3
Moumen Osama

現在の回避策は、UIAppearanceを介してそれらを削除することです:

UITableView.appearance(whenContainedInInstancesOf: 
    [UIHostingController<ContentView>.self]
).separatorStyle = .none
1
Matteo Pacini

初期化子にUITableView.appearance().separatorColor = .clearを追加する

struct SomeView: View {
  init() {
        UITableView.appearance().separatorColor = .clear
    }
}

この問題を解決してください。

1
Masanao Imai