У меня есть pickerView с данными, загруженными с веб-сайта. Я хочу установить высоту для каждой строки pickerView.pickerView разная высота строки
Вот что я пытался, но кажется, что pickerView принимает только одно значение для всех строк.
func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
var height: CGFloat = 40
if categories.count != 0 {
return heightForView((categories[component].valueForKey("name") as? String)!, font: UIFont(name: "HelveticaNeue-Thin", size: pickerFontSize!)!, width: pickerView.frame.width) + 10
}
return height + 10
}
func heightForView(text: String, font: UIFont, width: CGFloat) -> CGFloat {
let label:UILabel = UILabel(frame: CGRectMake(0, 0, width, CGFloat.max))
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.ByWordWrapping
label.font = font
label.textAlignment = .Center
label.text = text
label.sizeToFit()
return label.frame.height
}
Впервые массив категорий пуст, а rowHeightForComponent использует постоянное значение. Но когда я загрузить данные из основных данных Я хочу, чтобы мой pickerView перезагрузить себя с новой componentHeight, но это не вызывается, когда я писал:
pickerView.reloadAllComponents()
Вы уверены, что задали делегат для своего UIPickerView для своего текущего класса? – halileohalilei
@halileohalilei класс 'ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {и' переопределение FUNC viewDidLoad() { super.viewDidLoad() // pickerView делегат п Datasource pickerView.dataSource = само pickerView.delegate = self' является то, что правильно? – mikle94
Вы также внедрили метод 'numberOfComponents:'? – halileohalilei