質問編集履歴

1

Cannot subscript a value of type '[String : [String]]' with an index of type 'Int' というエラーが出てしまいます。

2019/06/05 13:17

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -145,3 +145,153 @@
145
145
  }
146
146
 
147
147
  }
148
+
149
+ 【追記】
150
+
151
+ 以下のようにしてみましたが
152
+
153
+ ```
154
+
155
+ import UIKit
156
+
157
+
158
+
159
+ class ViewController: UIViewController,UIPickerViewDelegate,
160
+
161
+ UIPickerViewDataSource{
162
+
163
+
164
+
165
+ @IBOutlet weak var rosennameTextField: UITextField!
166
+
167
+ @IBOutlet weak var stationnameTextField: UITextField!
168
+
169
+ let rosenname = ["東北新幹線","上越新幹線","東海道新幹線"]
170
+
171
+ let stationname:[String:[String]] =
172
+
173
+ [
174
+
175
+ "東北新幹線":["","東京","上野","大宮","小山","宇都宮","那須塩原","新白河","郡山"],
176
+
177
+ "上越新幹線":["","東京","上野","大宮","熊谷","高崎"],
178
+
179
+ "東海道新幹線":["","東京","品川","新横浜"]
180
+
181
+ ]
182
+
183
+
184
+
185
+ override func viewDidLoad() {
186
+
187
+ super.viewDidLoad()
188
+
189
+
190
+
191
+ let rosennamePickerView = UIPickerView()
192
+
193
+
194
+
195
+ rosennamePickerView.delegate = self
196
+
197
+
198
+
199
+ rosennamePickerView.tag = 1
200
+
201
+
202
+
203
+ rosennameTextField.inputView = rosennamePickerView
204
+
205
+
206
+
207
+ let stationnamePickerView = UIPickerView()
208
+
209
+
210
+
211
+ stationnamePickerView.delegate = self
212
+
213
+
214
+
215
+ stationnamePickerView.tag = 2
216
+
217
+
218
+
219
+ stationnameTextField.inputView = stationnamePickerView
220
+
221
+
222
+
223
+ // Do any additional setup after loading the view.
224
+
225
+ }
226
+
227
+ func numberOfComponents(in pickerView: UIPickerView) -> Int {
228
+
229
+ return 1
230
+
231
+ }
232
+
233
+ func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
234
+
235
+ if pickerView.tag == 1 {
236
+
237
+ return rosenname.count
238
+
239
+ }
240
+
241
+ else if pickerView.tag == 2 {
242
+
243
+ return stationname.count
244
+
245
+ }
246
+
247
+ return 0
248
+
249
+ }
250
+
251
+ func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
252
+
253
+ if pickerView.tag == 1 {
254
+
255
+ return rosenname[row]
256
+
257
+ }
258
+
259
+ else if pickerView.tag == 2 {
260
+
261
+ **return stationname[row]**
262
+
263
+ }
264
+
265
+ return nil
266
+
267
+ }
268
+
269
+ func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
270
+
271
+ if pickerView.tag == 1 {
272
+
273
+ rosennameTextField.text = rosenname[row]
274
+
275
+ }
276
+
277
+ else if pickerView.tag == 2 {
278
+
279
+ stationnameTextField.text = **stationname[row]**
280
+
281
+ //Cannot subscript a value of type '[String : [String]]' with an index of type 'Int'
282
+
283
+ というエラーが出てしまいます。
284
+
285
+ }
286
+
287
+ }
288
+
289
+ override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
290
+
291
+ view.endEditing(true)
292
+
293
+ }
294
+
295
+ }
296
+
297
+ ```