PickerViewでKey-Valueのように表示するように作ったのですが、
起動しなおすたびに並びが変わってしまい表示が安定しません。
並び替えとかを利用すればできると思い検索しましたが、
var dataList: [String : Any] の形で並べ替える方法は見つけることができませんでした。
どのようにしたらよろしいのでしょうか?
例)
1回目の起動のピッカー ビュー
テスト1
テスト2
テスト3
2回目の起動のピッカー ビュー
テスト2
テスト1
テスト3
コードの表示(ブロック)
SWIFT
1class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { 2 @IBOutlet weak var picker: UIPickerView! 3 var dataList: [String : Any] = ["テスト1":["1":"AAA","2":"BBB"],"テスト2":["1":"CCC","2":"DDD"],"テスト3":["1":"EEE","2":"FFF"]] 4 var pickerItems: [CustomObject] = [] 5 struct CustomObject { 6 let id: String 7 let list: Any 8 init(id: String, urllist: Any) { 9 self.id = id 10 self.list = urllist 11 } 12 } 13 override func viewDidLoad() { 14 super.viewDidLoad() 15 picker.delegate = self 16 picker.dataSource = self 17 for listID in dataList.keys { 18 if let name = dataList[listID]{ 19 print(listID) 20 print(name) 21 self.pickerItems.append(CustomObject(id: listID, urllist: name)) 22 } 23 } 24 } 25 // UIPickerViewの列の数 26 func numberOfComponents(in pickerView: UIPickerView) -> Int { 27 return 1 28 } 29 // UIPickerViewの行数、要素の全数 30 func pickerView(_ pickerView: UIPickerView, 31 numberOfRowsInComponent component: Int) -> Int { 32 return pickerItems.count 33 } 34 // UIPickerViewに表示する配列 35 func pickerView(_ pickerView: UIPickerView, 36 titleForRow row: Int, 37 forComponent component: Int) -> String? { 38 return pickerItems[row].id 39 } 40 // UIPickerViewのRowが選択された時の挙動 41 func pickerView(_ pickerView: UIPickerView, 42 didSelectRow row: Int, 43 inComponent component: Int) { 44 print(pickerItems[row].list) 45 } 46}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。