teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

試した事を追加しました!

2020/03/05 14:48

投稿

chichan666
chichan666

スコア5

title CHANGED
@@ -1,1 +1,1 @@
1
- ビューが表示されてからの経過時間を取得し、画面表示させようと試みたところクラッシュしてしまいました
1
+ ビューが表示されてからの経過時間を取得し、画面表示させようと試みたところクラッシュしてしまい困ってい
body CHANGED
@@ -1,7 +1,10 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
+ こんにちは!SwiftUI初心者です。
3
4
  ビューが表示されてからの経過時間を取得し、画面表示する機能を実装しようとしています。
4
5
  下記コードにて実行しようとしたところ、Clashしてしまいました。(必要箇所のみ抜粋しております)
6
+ 助けていただけると大変助かります。
7
+ よろしくお願いいたします。
5
8
 
6
9
  ### 発生している問題・エラーメッセージ
7
10
  エラーメッセージはありませんが、プレビューしようとするとClashしてしまいます。
@@ -55,7 +58,56 @@
55
58
  ```
56
59
 
57
60
 
61
+ ### 試した事
62
+ その後、下記のようにコードを修正しても同じくClashしてしまいました。
58
63
 
64
+ ```ここに言語名を入力
65
+ import SwiftUI
66
+ import UIKit
67
+ import Combine
68
+
69
+ //ビューが表示されてからの経過時間を画面表示するビュー
70
+ struct ContentView: View {
71
+ @EnvironmentObject var timerHolder : TimerHolder
72
+
73
+
74
+ var body: some View {
75
+ ZStack {
76
+ Text(String(self.timerHolder.count))
77
+ }.onAppear{
78
+ self.timerHolder.start()
79
+ }.onDisappear{
80
+ }
81
+ } //body
82
+ } //ContentlView
83
+
84
+
85
+ //画面が表示されてからの時間をカウントする
86
+ class TimerHolder : ObservableObject {
87
+ @Published var timer : Timer!
88
+ @Published var count = 0
89
+ @Published var timeup:Bool = false
90
+ func start() {
91
+ self.timer?.invalidate()
92
+ self.count = 0
93
+ self.timer = Timer.scheduledTimer(withTimeInterval: 0.01, repeats: true) {
94
+ _ in
95
+ self.count += 1
96
+ if(self.count==500){self.timeup=true}
97
+ }
98
+ }
99
+ }
100
+
101
+ //プレビュー
102
+ struct ContentView_Previews: PreviewProvider {
103
+ static var previews: some View {
104
+ ContentView()
105
+ }
106
+ }
107
+
108
+ ```
109
+
110
+
59
111
  ### 補足情報(FW/ツールのバージョンなど)
60
112
  Xcode ver : 11.3
61
113
  最終的には一定時間経過後に自動で画面が次々と切り替わっていく機能を実装したいと考えております。