gpt4 book ai didi

ios - 在TableView中实现多个PickerView

转载 作者:行者123 更新时间:2023-11-30 13:27:16 25 4
gpt4 key购买 nike

我尝试在UITableView内实现多个UIPickerView,每一行将包含一个独立的UIPickerView。问题是当我更改一个 PickerView 中的值时,它也会自动在另一行上更改,但有时不会。

但我想要的是每个 UITableViewCell 都有独立的 UIPickerView

enter image description here enter image description here

enter image description here

自定义单元格

    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 "
}
}

最佳答案

使用以下开源实现来实现您想要的内容。

Bohr

关于ios - 在TableView中实现多个PickerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37019890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com