Open1
SwiftUI: Pull to RefreshがwatchOSではできない件
リストやスクロールビューを下にスワイプするとリロードされるというUIがあります。Pull to Refreshと呼ばれるものです。
iOSのSwiftUIであれば、List
やScrollView
に.refreshable
モディファイヤを付けるだけで、スワイプしたときに勝手にプログレスインジケータ(回る奴)が表示され、async
コンテキストで.refreshable
に渡したクロージャが呼ばれます。
struct ContentView: View {
var body: some View {
List {
ForEach(1 ... 10, id: \.self) { idx in
Text("Item \(idx)")
}
}
.padding()
.refreshable {
// ここにasyncのリロード処理を書く
}
}
}
ただ、iOSではそうなんですが、watchOSだとList
を下にスワイプさせても何も起きません。プログレスインジケータは表示されませんし、クロージャも呼ばれません。
Apple標準の「メール」アプリにはPull to Refreshが実装されているので、同じことをしようとすると自前でやるしかない気がします。