回答編集履歴

2

返信に対する回答

2019/09/24 16:01

投稿

hameji
hameji

スコア1380

test CHANGED
@@ -83,3 +83,109 @@
83
83
  広告が準備できていない時、画面遷移できないと、
84
84
 
85
85
  ユーザーはその時点で止まってしまって、バグとなってしまいますし。
86
+
87
+
88
+
89
+ 9/25 追記
90
+
91
+ うーん、難しいですね。
92
+
93
+ インタースティシャル広告を自分が使ってたら、実機で試してお答えできるのですが、、、
94
+
95
+
96
+
97
+ nextを呼び出す部分でどうなっているのかわかりませんが、
98
+
99
+ print()を代入し、実際に渡している値、順序を確認することですかね。
100
+
101
+
102
+
103
+ ```Swift
104
+
105
+ private func next(times:DefaultTime) {
106
+
107
+ times.check = true // <-これを適宜、各printの前に移動する。
108
+
109
+ print("1:", times)
110
+
111
+ if interstitial.isReady {
112
+
113
+ print("2-1:", times)
114
+
115
+ interstitial.present(fromRootViewController: self)
116
+
117
+ print("2-2:", times)
118
+
119
+ } else {
120
+
121
+ print("3-1:" times)
122
+
123
+ print("Ad wasn't ready")
124
+
125
+ }
126
+
127
+ print("4:", times)
128
+
129
+ // 設定値を追加
130
+
131
+ // times.check = self.zeroOverCheck.isOn ここは一旦コメントアウト
132
+
133
+ // 画面遷移
134
+
135
+ let vc = storyboard!.instantiateViewController(withIdentifier: "MainViewController") as! MainViewController
136
+
137
+ vc.defaultTime = times
138
+
139
+ print("5:", times)
140
+
141
+ self.present(vc, animated: true, completion: nil)
142
+
143
+ print("6:", times)
144
+
145
+ }
146
+
147
+ ```
148
+
149
+
150
+
151
+ まず、上記を試してみて、各printの前で値を変え、
152
+
153
+ 期待の動きをする箇所を探すのがいいと思います。
154
+
155
+ もし、しないようなら、、、実装方法を変える必要があるということだと思います。
156
+
157
+ それこそ、closureを使うとか、GCDを使うかとか、、、
158
+
159
+
160
+
161
+ ちなみに、DefaultTimeの構造がわかったので、余計なことですが、
162
+
163
+ func next内ではDefaultTimeのcheck(Bool型)のみ変更しているので、
164
+
165
+ timesはメンバ変数で持っている?ことを前提にすると、
166
+
167
+
168
+
169
+ ```Swift
170
+
171
+ private func next(bool: Bool) {
172
+
173
+ // ~~ 省略
174
+
175
+ self.times.check = bool
176
+
177
+ // ~~ 省略
178
+
179
+ }
180
+
181
+ ```
182
+
183
+
184
+
185
+ viewを通して保持しておきたいと思いますので、メンバ変数にするのがいいと思います。
186
+
187
+ もし新たに作るとしたら、func next内で作ればいいと思いますし。
188
+
189
+
190
+
191
+ 後、timesにすると、複数形なので [DefaultTime] のように複数あるイメージになりますよ。

1

修正3

2019/09/24 16:01

投稿

hameji
hameji

スコア1380

test CHANGED
@@ -31,3 +31,55 @@
31
31
  関係のないことですが、引数で受け取ったものを利用して何かを行わず、
32
32
 
33
33
  引数自体に他のメンバ変数を代入しているのは変な気がしますが、、、
34
+
35
+
36
+
37
+ googleのサンプルをみてみましたが、
38
+
39
+ [https://github.com/googleads/googleads-mobile-ios-examples/blob/master/Swift/admob/InterstitialExample/InterstitialExample/ViewController.swift](https://github.com/googleads/googleads-mobile-ios-examples/blob/master/Swift/admob/InterstitialExample/InterstitialExample/ViewController.swift)
40
+
41
+ closureなどで終了を取得する必要はないみたいですね。
42
+
43
+ 単純に直列処理されているように見えますよ。
44
+
45
+
46
+
47
+ なので、以下のように修正すればいいのではないでしょうか?
48
+
49
+
50
+
51
+ ```Swift
52
+
53
+ private func next(times:DefaultTime) {
54
+
55
+ if interstitial.isReady {
56
+
57
+ interstitial.present(fromRootViewController: self)
58
+
59
+ } else {
60
+
61
+ print("Ad wasn't ready")
62
+
63
+ }
64
+
65
+ // 設定値を追加
66
+
67
+ times.check = self.zeroOverCheck.isOn
68
+
69
+ // 画面遷移
70
+
71
+ let vc = storyboard!.instantiateViewController(withIdentifier: "MainViewController") as! MainViewController
72
+
73
+ vc.defaultTime = times
74
+
75
+ self.present(vc, animated: true, completion: nil)
76
+
77
+ }
78
+
79
+ ```
80
+
81
+
82
+
83
+ 広告が準備できていない時、画面遷移できないと、
84
+
85
+ ユーザーはその時点で止まってしまって、バグとなってしまいますし。