Ami*_*r_P 1 uipickerview ios swift
根据Apples API引用在此方法中重用视图
optional func pickerView(_ pickerView: UIPickerView,
viewForRow row: Int,
forComponent component: Int,
reusing view: UIView?) -> UIView
Run Code Online (Sandbox Code Playgroud)
是一个由选择器视图的缓存视图,但当我尝试将它用于下一行时,它总是为零,而当我返回UILabel时,重用视图为零.问题是什么?这是我的实施:
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
let pickerLabel = UILabel()
pickerLabel.textColor = UIColor.black
pickerLabel.text = "10"
pickerLabel.textAlignment = NSTextAlignment.center
pickerLabel.sizeToFit()
return pickerLabel
}
Run Code Online (Sandbox Code Playgroud)
您的代码不会尝试使用重用视图.你的代码应该是这样的:
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
var pickerLabel : UILabel
if let label = view as? UILabel {
pickerLabel = label
} else {
pickerLabel = UILabel()
pickerLabel.textColor = UIColor.black
pickerLabel.textAlignment = NSTextAlignment.center
}
pickerLabel.text = "10"
pickerLabel.sizeToFit()
return pickerLabel
}
Run Code Online (Sandbox Code Playgroud)
如果重用视图是标签,则此代码重用标签.否则,它会创建并设置一个新标签.
请注意,选择器只会在滚动选择器视图时传入重用视图.它类似于表视图的单元重用.