質問編集履歴

2

データーベースRealmのコードが残っていて不具合が発生していますので、Realmを完全に削除して作りなおしています。別の方法での質問を別途作りますのでこの質問は取り下げさせてください。

2019/05/16 08:40

投稿

Tomzy
Tomzy

スコア104

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- ### 複数のSegmented controlを設定して、選ばれた項目をナビゲーションバーのタイトルやラベルに表示させることは出来ましたが、選択された画面が表示されず行き詰まっています。ご教示ください。
1
+ ### 複数のSegmented controlを設定して、選ばれた項目をナビゲーションバーのタイトルやラベルに表示させることは出来ましたが、選択された画面が表示されず行き詰まっています。ご教示ください。⇨データーベースRealmのコードが残っていて不具合が発生していますので、Realmを完全に削除して作りなおしています。別の方法での質問を別途作りますのでこの質問は取り下げさせてください。
2
2
 
3
3
 
4
4
 

1

最初の質問に記載したコードには誤りがあり、回答を頂いた内容を反映したコードを修正しました。結果はエラーは消えてビルドできますが、segmented controlの内容を反映しない不具合は未解決です。

2019/05/16 08:40

投稿

Tomzy
Tomzy

スコア104

test CHANGED
File without changes
test CHANGED
@@ -8,15 +8,15 @@
8
8
 
9
9
 
10
10
 
11
- ### った対策でエラ出現
11
+ ### 最初の質問時に間違ったドの修正と下記回答を参考にコードを修正しました。
12
-
12
+
13
- segmented controlを設定するファイルで選択項目の数値を取得するコドを自作したのですが、"Value of type 'UISegmentedControl' has no subscripts"のエラーがで先に進めません。
13
+ エラは解消ましたが、上記不具合は解消されません。
14
-
15
-
16
-
17
-
18
-
14
+
15
+
16
+
17
+
18
+
19
- ### segmented controlを設定するクラス class JikokuDataModelのコード
19
+ ### segmented controlを設定するクラス class JikokuDataModelのコードは修正していません。
20
20
 
21
21
  ```
22
22
 
@@ -98,7 +98,7 @@
98
98
 
99
99
 
100
100
 
101
- ### segmented controlを設定した画面のTorikomiSetteiViewController.swiftのコード
101
+ ### segmented controlを設定した画面のTorikomiSetteiViewController.swiftのコードは関係ないコードは削除してコードを修正しました。
102
102
 
103
103
 
104
104
 
@@ -124,9 +124,7 @@
124
124
 
125
125
  @IBOutlet weak var textHoumen: UITextField!
126
126
 
127
- @IBOutlet weak var torikomiID: UILabel!
127
+
128
-
129
- @IBOutlet weak var buttonJikokuKeyboard: UIButton!
130
128
 
131
129
 
132
130
 
@@ -140,12 +138,14 @@
140
138
 
141
139
  super.viewDidLoad()
142
140
 
143
- // NaviBarのタイトルを大きく表示させる
141
+
144
-
145
- navigationController?.navigationBar.prefersLargeTitles = true
146
142
 
147
143
  textEkimei.delegate = self as UITextFieldDelegate
148
144
 
145
+
146
+
147
+ print("ここまで来たうウェブ画面での保存データ", jikokuDataModel)
148
+
149
149
 
150
150
 
151
151
  //ウエブサイトGoogleのボタンが押されたときのデータの隣への移送と画面遷移
@@ -156,90 +156,88 @@
156
156
 
157
157
  print("ここまできたwebSiteGoogleボタンが押された")
158
158
 
159
-
159
+ // モデルクラスをインスタンス化
160
+
161
+ let jikokuDataModel = JikokuDataModel()
162
+
163
+
164
+
165
+ //segmented controlの選択数値を取得
166
+
167
+
168
+
169
+ jikokuDataModel.jikokuShuruiSeg = jikokuShuruiSeg.selectedSegmentIndex
170
+
171
+
172
+
173
+ jikokuDataModel.youbiSeg = youbiSeg.selectedSegmentIndex
174
+
175
+
176
+
177
+ jikokuDataModel.oufukuSeg = oufukuSeg.selectedSegmentIndex
178
+
179
+ //テキストフィールドの名前を取得
180
+
181
+ jikokuDataModel.textEkimei = self.textEkimei.text!
182
+
183
+ jikokuDataModel.textHoumen = self.textHoumen.text!
184
+
185
+ print("ここまで来たデータの読み込み", jikokuDataModel)
186
+
187
+ //ここで移動先のstoryboardを選択
188
+
189
+ let storyboard: UIStoryboard = self.storyboard!
190
+
191
+
192
+
193
+ let webSiteGoogle = storyboard.instantiateViewController(withIdentifier: "webSiteGoogle") as! TorikomiWebViewController
194
+
195
+
196
+
197
+ //jikokuDataModelをwebSiteGoogle画面に移す
198
+
199
+
200
+
201
+ webSiteGoogle.jikokuhyouIchijikiroku = jikokuDataModel
202
+
203
+ navigationController?.pushViewController(webSiteGoogle, animated: true)
204
+
205
+
206
+
207
+ print("ここまできたwebSiteGoogle画面への遷移")
208
+
209
+ }
210
+
211
+ ```
212
+
213
+ ### 上記のGoogleボタンにより遷移する画面コードを修正(segmented controlの選択結果を表示する画面TorikomiWebViewController.swift)
214
+
215
+
216
+
217
+ ```
218
+
219
+ class TorikomiWebViewController: UIViewController, RealmPrimaryKeyIncrementerProtocol, WKUIDelegate, UINavigationControllerDelegate, WKNavigationDelegate, GADBannerViewDelegate {
220
+
221
+
222
+
223
+ var jikokuhyouIchijikiroku:JikokuDataModel?
224
+
225
+
226
+
227
+ @IBOutlet weak var navBar: UINavigationBar!
228
+
229
+ @IBOutlet weak var webEkimei: UILabel!
230
+
231
+ @IBOutlet weak var webHoumen: UILabel!
232
+
233
+ @IBOutlet weak var webYoubi: UILabel!
234
+
235
+ @IBOutlet weak var webOuFuku: UILabel!
236
+
237
+
160
238
 
161
239
  // モデルクラスをインスタンス化
162
240
 
163
- let jikokuDataModel = JikokuDataModel()
164
-
165
-
166
-
167
- //segmented controlの選択数値を取得
168
-
169
- //ここで3つの同じエラーがでます。エラーは"Value of type 'UISegmentedControl' has no subscripts"
170
-
171
-
172
-
173
- jikokuDataModel.jikokuShuruiSeg = self.jikokuShuruiSeg?[IndexPath.row]["jikokuShuruiSeg"] as? Int //ここにエラー
174
-
175
-
176
-
177
- jikokuDataModel.youbiSeg = self.youbiSeg?[IndexPath.row]["youbiSeg"] as? Int //ここにエラー
178
-
179
- jikokuDataModel.oufukuSeg = self.oufukuSeg?[IndexPath.row]["oufukuSeg"] as? Int //ここにエラー
180
-
181
-
182
-
183
- //テキストフィールドの名前を取得
184
-
185
- jikokuDataModel.textEkimei = self.textEkimei.text!
186
-
187
- jikokuDataModel.textHoumen = self.textHoumen.text!
188
-
189
- print("Recorded:", jikokuDataModel)
190
-
191
- print("ここまできたRealmデータ読み込み2222")
192
-
193
-
194
-
195
- // SubViewController へ遷移するために //Segue を呼び出す
196
-
197
- let storyboard: UIStoryboard = self.storyboard!
198
-
199
- let webSiteGoogle = storyboard.instantiateViewController(withIdentifier: "webSiteGoogle") as! TorikomiWebViewController
200
-
201
-
202
-
203
- //jikokuDataModelをwebSiteGoogle画面に移す
204
-
205
- webSiteGoogle.jikokuhyouIchijikiroku = jikokuDataModel
206
-
207
- //Navigation Controllerを使ってコードで遷移するコード
208
-
209
- navigationController?.pushViewController(webSiteGoogle, animated: true)
210
-
211
- }
212
-
213
- ```
214
-
215
- ### 上記のGoogleボタンにより遷移する画面コード。(segmented controlの選択結果を表示する画面TorikomiWebViewController.swift)
216
-
217
-
218
-
219
- ```
220
-
221
- class TorikomiWebViewController: UIViewController, RealmPrimaryKeyIncrementerProtocol, WKUIDelegate, UINavigationControllerDelegate, WKNavigationDelegate, GADBannerViewDelegate {
222
-
223
-
224
-
225
- var jikokuhyouIchijikiroku:JikokuDataModel?
226
-
227
-
228
-
229
- @IBOutlet weak var navBar: UINavigationBar!
230
-
231
- @IBOutlet weak var webEkimei: UILabel!
232
-
233
- @IBOutlet weak var webHoumen: UILabel!
234
-
235
- @IBOutlet weak var webYoubi: UILabel!
236
-
237
- @IBOutlet weak var webOuFuku: UILabel!
238
-
239
-
240
-
241
- // モデルクラスをインスタンス化
242
-
243
241
  let jikokuDataModel = JikokuDataModel()
244
242
 
245
243
 
@@ -250,15 +248,15 @@
250
248
 
251
249
 
252
250
 
253
- let jikokuDataModel = JikokuDataModel()
251
+ print("ここまで来たウェブ画面での保存データ", jikokuDataModel)//この画面に遷移した時のデータを確認
254
-
255
-
256
-
252
+
253
+
254
+
257
- //時刻表の種類のsegmented controlによりナビゲーションバーのタイトルを表示
255
+ //時刻表取得方法のsegmented controlによりナビゲーションバーのタイトルを表示
258
256
 
259
257
  switch JikokuDataJikokuShuruiSeg(rawValue: jikokuDataModel.jikokuShuruiSeg)! {
260
258
 
261
- case .realBus:
259
+ case .realBus:
262
260
 
263
261
  self.title = "リアルタイムバス時刻表"
264
262
 
@@ -276,19 +274,23 @@
276
274
 
277
275
  }
278
276
 
277
+
278
+
279
- //Labelに駅名を表示
279
+ //Labelに駅名を表示
280
280
 
281
281
  webEkimei.text = jikokuhyouIchijikiroku?.textEkimei
282
282
 
283
- //Labelに方面を表示
283
+ //Labelに方面を表示
284
284
 
285
285
  webHoumen.text = jikokuhyouIchijikiroku?.textHoumen
286
286
 
287
287
 
288
288
 
289
- //ラベルに曜日を記載
289
+ //ラベルに曜日を記載
290
-
290
+
291
+
292
+
291
- switch JikokuDataYoubiSeg(rawValue: jikokuDataModel.youbiSeg)! {
293
+ switch JikokuDataYoubiSeg(rawValue: jikokuDataModel.youbiSeg)! {
292
294
 
293
295
 
294
296
 
@@ -312,7 +314,9 @@
312
314
 
313
315
  }
314
316
 
317
+
318
+
315
- //ラベルに往路・復路を記載
319
+ //ラベルに往路・復路を記載
316
320
 
317
321
  switch JikokuDataOufukuSeg(rawValue: jikokuDataModel.oufukuSeg)! {
318
322
 
@@ -334,8 +338,6 @@
334
338
 
335
339
  }
336
340
 
337
-
338
-
339
341
  ```
340
342
 
341
343
  ### エラー部分をコメントアウトしてビルドした時のスクリーンショット
@@ -410,4 +412,28 @@
410
412
 
411
413
 
412
414
 
415
+ DDD
416
+
417
+ 設定画面におけるprint("ここまで来たデータの読み込み", jikokuDataModel)の表示は下記スクリーンショットのごとくsegmented controlを選んだとおり数字が示されます。
418
+
419
+ ![イメージ説明](7e73799ba78af1fb73e84bfc74dea502.png)
420
+
421
+
422
+
423
+ EEE
424
+
425
+ しかし、ラベルを表示する画面での
426
+
427
+ print("ここまで来たウェブ画面での保存データ", jikokuDataModel)//この画面に遷移した時のデータを確認
428
+
429
+ の表示は、segmented controlを設定するクラス class JikokuDataModelで設定した初期の数字が反映されます。
430
+
431
+ 0にすれば0と表示されます。
432
+
433
+ ![イメージ説明](4501bb111c992dd761cd8b733794b595.png)
434
+
435
+
436
+
437
+
438
+
413
439
  よろしくお願いします。