PickerView在文本字段输入中不显示任何内容

时间:2019-07-18 08:11:46

标签: swift uipickerview

当我点击textField时,将出现输入区域,但只有1行,其中包含空白内容。 (我希望3行:a,b和c)

我将numberOfRowsInComponent和titleForRow函数中的返回值更改为常量,但是得到了相同的结果(1个空白行)。也许这两个函数永远不会被调用。

请帮助我!

//In ViewDidLoad Function (ViewController.swift):
let myPickerView: MyPickerView = MyPickerView(arrData: ["a","b","c"]){ selected in
     print(selected)
}

textField.inputView = myPickerView.picker





//In MyPickerView.swift
class MyPickerView: NSObject, UIPickerViewDelegate, UIPickerViewDataSource {

    var arrData: Array<String>
    var picker: UIPickerView
    var action: (_ selected: String) -> Void

    public init(
        arrData: Array<String>,
        action: @escaping (_ selected: String) -> Void
        ) {

        self.arrData = arrData
        self.action = action
        self.picker = UIPickerView()

        super.init()

        self.picker.delegate = self
        self.picker.dataSource = self    
    }

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

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return self.arrData.count
    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return self.arrData[row]
    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        self.action(self.arrData[row])
    }
}

1 个答案:

答案 0 :(得分:0)

我发现了问题。当我将myPickerView更改为全局变量(放在ViewDidLoad之外)时,一切都很好。

var myPickerView: MyPickerView?

//In ViewDidload
myPickerView = MyPickerView(arrData: ["a","b","c"]){ selected in
     print(selected)
}