私は SwiftUI WWDCトークによるデータフロー を見てきました。彼らは、SwiftUIビューに接続され、時間でUIを更新するタイマーパブリッシャーを使用するサンプルコードを含むスライドを持っています。
私はまったく同じことをしたいいくつかのコードに取り組んでいますが、これを理解することができませんPodcastPlayer.currentTimePublisher
が実装され、UI構造体にフックされます。 Combineに関するビデオもすべて見ました。
どうすればこれを達成できますか?
サンプルコード:
struct PlayerView : View {
let episode: Episode
@State private var isPlaying: Bool = true
@State private var currentTime: TimeInterval = 0.0
var body: some View {
VStack { // ...
Text("\(playhead, formatter: currentTimeFormatter)")
}
.onReceive(PodcastPlayer.currentTimePublisher) { newCurrentTime in
self.currentTime = newCurrentTime
}
}
}
それは読者の練習問題として残されたと思います。
これはタイマーパブリッシャー自体ではなく、ポッドキャストの現在時刻のパブリッシャーではないことに注意してください。つまり、currentTimeが変更された場合にのみ、定期的にパブリッシュされません。
これを処理するはずの@Publishedというプロパティラッパーがありますが、まだ試していません: https://developer.Apple.com/documentation/combine/published