PickerView перезагрузится сам при неправильном поведении Swift 4.2 - PullRequest
0 голосов
/ 28 февраля 2019

Мой pickerView работал очень хорошо, но не знаю, почему просто неправильно работает после перестройки папки проекта.

Компонент [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 дня, но все еще не могу понять проблему ...

...