2016-07-07 7 views
0

私はUIPickerViewにアイテムをロードしようとしていますがロードされていない、これらの項目は、前のビューにprepareforsegue機能に移入されたリストからロードされているUIPickerView項目が

class AddItemViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { 


    @IBOutlet weak var ItemPickView: UIPickerView! 
    @IBOutlet weak var textboxName: UITextField! 

    var options: [String]? 
    var name: String? 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     print("viewdidload started") 
     ItemPickView.delegate = self 
     ItemPickView.dataSource = self 
     textboxName.inputView = ItemPickView 
     print("viewdidload ended") 
     print(options) 
    } 

    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
     return 1 
    } 

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     options!.count 
    } 

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
     return options![row] 
    } 

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
     textboxName.text = options![row] 
    } 
} 

マイセグエコード

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if segue.identifier == "AddNewItem" { 
     print("segue started") 
     let controller = segue.destinationViewController as? AddItemViewController 
     controller?.options = ["test1","test2","test3"] 
     print("segue ended") 
    } 
} 

UIPickerViewは、リストが変更される前に開始されるようです。これを回避するには?

どうもありがとう

編集:ここではそれはのviewDidLoad前セグエ仕上げを思わ

segue started 
segue ended 
viewdidload started 
viewdidload ended 
nil 
fatal error: unexpectedly found nil while unwrapping an Optional value 
(lldb) 

印刷たstatmentsからのログは、なぜオプションのリストが更新されない...ですか?

+0

コードが正しいです。デバッグしましたか? 'prepareForSegue'のif条件に入るコードです – Shubhank

+0

はいコードは正しく動作していますが、printステートメントは印刷されますが、viewDidLoadはsegueコードより前に実行されているようです。またviewDidAppearは役に立ちません –

+0

コードにはありませんprintステートメントあなたのコードを更新してから、ログ出力シーケンスを表示してください。 – Shubhank

答えて

0

1つの方法は、ファイル所有者をデータソースとしてタグ付けし、[XIB]に委譲することです。必要なデータソースを添付してデリゲートするには、View didloadを待つ必要はありません。