前提・実現したいこと
こんにちは!SwiftUI初心者です。
ビューが表示されてからの経過時間を取得し、画面表示する機能を実装しようとしています。
下記コードにて実行しようとしたところ、Clashしてしまいました。(必要箇所のみ抜粋しております)
助けていただけると大変助かります。
よろしくお願いいたします。
発生している問題・エラーメッセージ
エラーメッセージはありませんが、プレビューしようとするとClashしてしまいます。
該当のソースコード
import SwiftUI import UIKit import Combine //ビューが表示されてからの経過時間を画面表示するビュー struct ContentView: View { @EnvironmentObject var timerHolder : TimerHolder var body: some View { ZStack { Text(String(self.timerHolder.count)) }.onAppear{ self.timerHolder.start() }.onDisappear{ } } //body } //ContentlView //画面が表示されてからの時間をカウントする class TimerHolder : ObservableObject { @Published var timer : Timer! @Published var count = 0 @Published var timeup:Bool = false func start() { self.timer?.invalidate() self.count = 0 self.timer = Timer.scheduledTimer(withTimeInterval: 0.01, repeats: true) { _ in self.count += 1 if(self.count==500){self.timeup=true} } } } //プレビュー struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
試した事
その後、下記のようにコードを修正しても同じくClashしてしまいました。
import SwiftUI import UIKit import Combine //ビューが表示されてからの経過時間を画面表示するビュー struct ContentView: View { @EnvironmentObject var timerHolder : TimerHolder var body: some View { ZStack { Text(String(self.timerHolder.count)) }.onAppear{ self.timerHolder.start() }.onDisappear{ } } //body } //ContentlView //画面が表示されてからの時間をカウントする class TimerHolder : ObservableObject { @Published var timer : Timer! @Published var count = 0 @Published var timeup:Bool = false func start() { self.timer?.invalidate() self.count = 0 self.timer = Timer.scheduledTimer(withTimeInterval: 0.01, repeats: true) { _ in self.count += 1 if(self.count==500){self.timeup=true} } } } //プレビュー struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
補足情報(FW/ツールのバージョンなど)
Xcode ver : 11.3
最終的には一定時間経過後に自動で画面が次々と切り替わっていく機能を実装したいと考えております。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/11 11:50
2020/03/11 12:10