ios - 未加载来自 segue 的 UIPickerView 项目

标签 ios swift segue uipickerview

我正在尝试将项目加载到 UIPickerView 中,这些项目是从上一个 View 中的prepareforsegue 函数中填充的列表中加载的

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是在列表更改之前启动的。有什么解决办法吗?

非常感谢

编辑:这是打印语句的日志

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

segue 似乎在 viewdidload 之前完成。那么为什么选项列表没有更新?

最佳答案

一种方法是将文件所有者标记为数据源并委托(delegate)[在 XIB 中]。这样就不需要等待 View didload 来附加必要的数据源和委托(delegate)。

关于ios - 未加载来自 segue 的 UIPickerView 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38250895/

相关文章:

swift - 是否有一些快速的方法来测试变量是否等于某些枚举值?

swift - 如何从表格 View 单元格传递数据

ios - UITableViewCell 中的 UITextView 防止 segue

ios - 如何堆叠3个不同尺寸的按钮(swift/iOS)

ios - 如何从 xib 调用 performSegueWithIdentifier?

iOS App Transport Security 阻止来自异常(exception)域的 http 传输

ios - 如何在已呈现的 Controller 上呈现新 Controller

ios - 位置为 :fixed in iOS 11 的闪烁/消失 header

iphone - 为什么在 iphone sdk 的所有 Collection View 中重复相同的图像

swift - Swift 方法参数中的 3 项是什么?