swift - PickerView 将自行重新加载错误行为 Swift 4.2
问题描述
我的 pickerView 运行良好,但不知道为什么在重建项目文件夹后会出现错误行为。
组件 [0] 将自行重新加载,但我没有为它编写任何代码!
以下是代码:
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 天,但仍然无法弄清楚问题...
解决方案
推荐阅读
- node.js - NodeJs : TypeError: require(...) is not a function
- javascript - 按钮不会关闭 Safari 中的窗口。适用于所有其他浏览器
- python - 查找“链式”元组列表的任何允许排序
- ios - ShapeLayer.strokeEnd 在 Swift 中的时间不够用了
- spring-boot - 弹簧靴 | 替代在资源文件夹中使用 Intellij 静态和模板运行
- r - Split a data frame string based on a \
- r - R Coarsened Exact Matching(打印匹配对)
- html - 如何单击阴影 Cypress.io 内的按钮
- c# - 为什么使用 ObjectARX 中的命令创建的视口不保存到数据库中?
- string - “String”类型不是“FontStyle”类型的子类型