お世話になります。
・アプリの起動時に、UserDefaultsを読み込み、これが空ならば、別のビューへ飛び、値があれば、その内容の文字列を改行文字で区切り、各文字列を、起動時に表示される画面のピッカービューの選択肢として登録する
ということをしようとしました。
そのために、ストーリーボードの最初の画面には、MainSpinnerという名前でピッカービューを置き、下記コードを記載しました。
そして、実際の起動時に、別のビューで、UserDefaultsに、ピッカービューの選択肢となる文字列を入れて、ピッカービューのある画面へ戻ったところ、ピッカービューの選択肢には何もありません。
アプリを再起動すると、別のビューへ飛ばないので、選択肢の元となる文字列はセーブされていることが確認できたのですが、相変わらずピッカービューの選択肢は空です。
どうすれば、ピッカービューに選択肢が表示されますか。
Xcodeのバージョンは8.2.1です。
よろしくお願いいたします。
swift
1 2import UIKit 3 4class ListViewController: UIViewController, 5 UIPickerViewDelegate, 6UIPickerViewDataSource{ 7 var WorkNames:[String]=[String]() 8 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 13 14 MainSpinner.delegate = self 15 MainSpinner.dataSource = self 16 self.view.addSubview(MainSpinner) 17 18 19 } 20 override func viewDidAppear(_ animated: Bool) { 21 super.viewDidAppear(animated) 22 23 let WorkNameLen=UserDefaults.standard.string(forKey: "WorkNameLen") 24 25 if WorkNameLen==nil{ 26 self.performSegue(withIdentifier: "toWorkNameList", sender: nil) 27 } 28 else{ 29 30 let WorkNamesMaster:[String?]=(WorkNameLen?.components(separatedBy: "\n"))! 31 for WorkName in WorkNamesMaster 32 { 33 if !(WorkName?.isEmpty)!{ 34 WorkNames.append(WorkName!) 35 } 36 } 37 38 } 39 40 } 41 42 override func didReceiveMemoryWarning() { 43 super.didReceiveMemoryWarning() 44 // Dispose of any resources that can be recreated. 45 } 46 47 func numberOfComponents(in pickerView: UIPickerView) -> Int { 48 return 1 49 } 50 51 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 52 return WorkNames.count 53 } 54 55 56 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 57 return WorkNames[row] 58 } 59 60 61 func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 62 print("row: (row)") 63 print("value: (WorkNames[row])") 64 } 65 66 @IBOutlet weak var MainSpinner: UIPickerView! 67 68 69}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/18 11:24