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からのログは、なぜオプションのリストが更新されない...ですか?
コードが正しいです。デバッグしましたか? 'prepareForSegue'のif条件に入るコードです – Shubhank
はいコードは正しく動作していますが、printステートメントは印刷されますが、viewDidLoadはsegueコードより前に実行されているようです。またviewDidAppearは役に立ちません –
コードにはありませんprintステートメントあなたのコードを更新してから、ログ出力シーケンスを表示してください。 – Shubhank