8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【SwiftUI】ListのSeparatorを無理やり消したい時の解決法

Last updated at Posted at 2019-09-29

2019/09/28日のSwiftUI1の現状で、SwiftUIのList separatorをインスタンス単位で公式に消して使う方法がなく、無理やりな方法を使うか、回避策を取る必要があります。

この記事では、上記の2つの方法について共有します。

1. 無理やり解決する

Stackoverflowの記事で見つけた解決方法です。

出典不明ですが、SwiftUIのListも UITableView.appearance() の制御下にあるようなので、この挙動を切り替えます。

Viewの表示/非表示で切り替えても良いですし、場合によってはUIApplicationDelegateで切り替えても良いかもしれません。

struct ContentView: View {
    var body: some View {
        
        NavigationView {
            List(accounts) { account in
                YourView()
            }
        }
        .onAppear {
            // SwiftUIの初期バージョンでは、Listに対してSeparatorを取り外す処理ができないので、この特殊なコードで無理やり消す。必要になったら別途考える。
            UITableView.appearance().separatorColor = .clear
        }
        .onDisappear {
            // Viewが画面を離れるときに元に戻す
            UITableView.appearance().separatorColor = .separator
        }
    }
}

2. ScrollViewを使う

こちらもStackoverflowだとこの辺に書いてあるのと、Twitterでも先駆者が何人か検証されていました。

ScrollView {
    VStack(alignment: .leading) {
        ForEach(accounts) { account in
            DailyCaloriesSummaryView()
        }
    }
}

どっち使ったら良い?

超暫定対応になるので、自分が期待する挙動を楽に実現できる方で進めれば良いかと思います。// FIXME: を残しておいて、正式対応されたらすぐに対応しても良いぐらいのやつ。

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?