質問編集履歴
2
データーベースRealmのコードが残っていて不具合が発生していますので、Realmを完全に削除して作りなおしています。別の方法での質問を別途作りますのでこの質問は取り下げさせてください。
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の内容を反映しない不具合は未解決です。
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,15 +8,15 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
-
###
|
11
|
+
### 最初の質問時に間違ったコードの修正と下記回答を参考にコードを修正しました。
|
12
|
-
|
12
|
+
|
13
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
251
|
+
print("ここまで来たウェブ画面での保存データ", jikokuDataModel)//この画面に遷移した時のデータを確認
|
254
|
-
|
255
|
-
|
256
|
-
|
252
|
+
|
253
|
+
|
254
|
+
|
257
|
-
//時刻表の
|
255
|
+
//時刻表取得方法のsegmented controlによりナビゲーションバーのタイトルを表示
|
258
256
|
|
259
257
|
switch JikokuDataJikokuShuruiSeg(rawValue: jikokuDataModel.jikokuShuruiSeg)! {
|
260
258
|
|
261
|
-
|
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
|
よろしくお願いします。
|