【发布时间】:2018-12-27 10:19:10
【问题描述】:
这段代码让我很生气。我已经阅读了数千篇教程和堆栈溢出 cmets....
请帮助我。 Picker 只包含一个空白的灰色屏幕。
代码在这里:
GenderPickerModel.swift
import UIKit
class GenderPickerModel: NSObject, UIPickerViewDataSource, UIPickerViewDelegate {
let genderPickerData: [String] = ["male", "female"]
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1;
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return genderPickerData.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return genderPickerData[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
}
}
并在控制器中使用:
@IBOutlet weak var gender: UITextField!
private var genderPickerView: UIPickerView?
override func viewDidLoad() {
super.viewDidLoad()
loadProfile()
prepareView()
}
func prepareView() {
genderPickerView = UIPickerView.init()
let gpModel = GenderPickerModel()
genderPickerView?.delegate = gpModel
genderPickerView?.dataSource = gpModel
gender.inputView = genderPickerView;
genderPickerView?.selectRow(0, inComponent: 0, animated: true)
genderPickerView?.reloadAllComponents()
}
【问题讨论】:
-
你为什么要创建 GenderPickerModel 的实例并分配给 dataSource 和委托,你能告诉我整个代码在一个控制器中吗?
-
我敢打赌,如果你将断点放在模型中,它不会停在那里,这意味着代表不工作
-
@AbhishekJadhav 因为这个控制器拥有 5 个 PickerView。我想将这些与 Controller 类分开
-
@ironRoei 但为什么呢?为数据创建一个单独的类并在调用控制器中包含代码有什么区别?