PickerView会自行以错误的行为重新加载Swift 4.2

时间:2019-02-28 12:48:01

标签: swift swift4.2

我的pickerView运行得很好,但是不知道为什么在重建项目文件夹后为什么会出现错误的行为。

component [0]将重新加载自身,但我没有为此编写任何代码!

enter image description here

下面是代码:

DropdownListExtension.swift

extension UITextField: UITextFieldDelegate {
    func loadAddressDropdownData(data: [String], zipField: UITextField!) {
        self.inputView = AddressPickerView(pickerData: data, cityField: self, zipField: zipField)

        // ToolBar
        let toolBar = UIToolbar()

        // Adding Button ToolBar
        // ...Init ToolBar
        self.inputAccessoryView = toolBar
    }

    @objc func doneClick() {
        self.resignFirstResponder()
    }
    @objc func cancelClick() {
        self.resignFirstResponder()
    }
}

AddressPickerView.swift

class AddressPickerView : UIPickerView, UIPickerViewDataSource, UIPickerViewDelegate {
    var pickerData : [String]!
    var pickerTextField : UITextField!
    var zipTextField: UITextField!
    var selectedRow = 0
    var selectedCity = "臺北市"

    init(pickerData: [String], cityField: UITextField, zipField: UITextField) {
        super.init(frame: CGRect.zero)
        self.pickerData = pickerData
        self.pickerTextField = cityField
        self.zipTextField = zipField
        self.delegate = self
        self.dataSource = self
        DispatchQueue.main.async{
            if pickerData.count > 0 {
                self.pickerTextField.text = self.pickerData[0]
            } else {
                self.pickerTextField.text = nil
            }
        }
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

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

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        if component == 0{
            return pickerData.count
        }else {
            switch selectedCity{
            //...
            default:
                return 0
            }
        }
    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        if component == 0{
            return pickerData[row]
        } else {
            switch selectedCity{
            //...
            default:
                return ""
            }

        }
    }
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        print(component)
        if component == 0 {
            pickerTextField.text = pickerData[row]
            selectedRow = row
            selectedCity = pickerData[row]
            pickerView.reloadComponent(1)
        }else {
            switch selectedCity{
            case "臺北市":
            zipTextField.text = taipei[row]
            case "基隆市":
            zipTextField.text = keelung[row]
            //...
            default:
                return print("")
            }
        }
    }
}

请帮助我修复它,我花了将近3天的时间,但仍然无法解决问题...

0 个答案:

没有答案