【发布时间】:2015-10-17 13:46:58
【问题描述】:
我有一个从网站加载数据的 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 使用常量值。但是当我从 Core Data 加载数据时,我希望我的 pickerView 用新的 componentHeight 重新加载自己,但是当我写的时候它没有被调用:
pickerView.reloadAllComponents()
【问题讨论】:
-
您确定将 UIPickerView 的委托设置为当前班级吗?
-
@halileohalilei
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {和override func viewDidLoad() { super.viewDidLoad() // pickerView delegate n dataSource pickerView.dataSource = self pickerView.delegate = self对吗? -
你是否也实现了方法
numberOfComponents:? -
@halileohalilei 是的,我已经实现了 numberOfComponentsInPickerView、numberOfRowsInComponent、titleForRow、viewForRow 和 rowHeightForComponent 方法。
标签: ios swift uipickerview reload