[英]Implementing Multiple PickerView inside TableView
我试图在UITableView
内实现Multiple UIPickerView
,每行将包含一个独立的UIPickerView
。 问题是,当我在一个PickerView
更改值时,它也会在另一行上自动更改,但有时不会更改。
但我想为每个UITableViewCell
拥有独立的UIPickerView
。
自定义单元
class PrayerCell: UITableViewCell, UIPickerViewDataSource, UIPickerViewDelegate {
@IBOutlet var detailView: UIView!
@IBOutlet var name: UILabel!
@IBOutlet var time: UILabel!
@IBOutlet var pickerView: UIPickerView!
@IBOutlet var toggleAlarm: UISwitch!
var isObserving = false;
class var expandedHeight: CGFloat {
get {
return 200
}
}
class var defaultHeight: CGFloat {
get {
return 44
}
}
func checkHeight() {
detailView.hidden = (frame.size.height < PrayerCell.expandedHeight)
}
override func awakeFromNib() {
super.awakeFromNib()
self.pickerView.delegate = self
self.pickerView.dataSource = self
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(false, animated: false)
}
func watchFrameChanges() {
if !isObserving {
addObserver(self, forKeyPath: "frame", options: [.New, .Initial], context: nil)
isObserving = true;
}
}
func ignoreFrameChanges() {
if isObserving {
removeObserver(self, forKeyPath: "frame")
isObserving = false;
}
}
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if keyPath == "frame" {
checkHeight()
}
}
let pickerData = [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickerData.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return String(pickerData[row])
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
print(row)
updateLabel()
}
func updateLabel(){
// let value = pickerData[pickerView.selectedRowInComponent(0)]
// minsBeforeLabel.text = String(value) + " Minutes Before "
}
}
使用以下所需的开源实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.