UIPickerView повторно использовать представление всегда ноль
В соответствии с ссылками API Apple, повторное использование представления в этом методе
optional func pickerView(_ pickerView: UIPickerView,
viewForRow row: Int,
forComponent component: Int,
reusing view: UIView?) -> UIView
это кэшированное представление в представлении выбора, но когда я пытаюсь использовать его для следующих строк, оно всегда равно нулю, пока я возвращаю 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
}
1 ответ
Ваш код не пытается использовать вид повторного использования. Ваш код должен быть примерно таким:
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
}
Этот код повторно использует метку, если представление повторного использования является меткой. В противном случае он создает и устанавливает новый ярлык.
Обратите внимание, что средство выбора передается только в представлении повторного использования при прокрутке представления средства выбора. Это похоже на повторное использование ячейки табличного представления.