我有一个库中的水平AKPickerView
。AKPickerView
中的选定项将获得下划线和更大的字体。
我的演示显示了我迄今为止创建的内容,可以为所选项目创建下划线和更大的字体。。但是我的实现导致了一些奇怪的行为。其他单元格在设置项目后的行为异常,如图所示:
https://github.com/Akkyie/AKPickerView-Swift
我认为这与重新加载数据和取消单元格排队有关,但我不知道如何实现我想要的结果,是什么导致了这个错误?
代码:
import UIKit
import AKPickerView_Swift
class SystemSetupTableViewCell: UITableViewCell {
@IBOutlet weak var questionTitle: UILabel!
@IBOutlet weak var pickerView: AKPickerView!
@IBOutlet weak var unitTitle: UILabel!
fileprivate var answers: [String]!
override func awakeFromNib() {
super.awakeFromNib()
pickerView.delegate = self
pickerView.dataSource = self
}
func configure(questionTitle: String, answers: [String]){
self.questionTitle.text = questionTitle
self.answers = answers
pickerView.font = UIFont.systemFont(ofSize: 50)
pickerView.highlightedFont = UIFont.boldSystemFont(ofSize: 100)
pickerView.reloadData()
}
}
extension SystemSetupTableViewCell: AKPickerViewDataSource {
func numberOfItemsInPickerView(_ pickerView: AKPickerView) -> Int {
return answers.count
}
func pickerView(_ pickerView: AKPickerView, titleForItem item: Int) -> String {
return answers[item]
}
}
extension SystemSetupTableViewCell: AKPickerViewDelegate {
func pickerView(_ pickerView: AKPickerView, configureLabel label: UILabel, forItem item: Int) {
if pickerView.selectedItem == item {
let underlineAttribute = [NSUnderlineStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue]
let underlineAttributedString = NSAttributedString(string: label.text!, attributes: underlineAttribute)
label.attributedText = underlineAttributedString
}
}
func pickerView(_ pickerView: AKPickerView, didSelectItem item: Int) {
pickerView.reloadData()
unitTitle.text = "\(answers[item]) liters"
}
}
最佳答案
我通过更新库中的代码解决了这个问题。
变化如下:
从单元格重写isSelected
,这样单元格寄存器就会更改。
更多信息请访问:https://github.com/Akkyie/AKPickerView-Swift/issues/35
西蒙娜彻有正确的解决方案。
关于ios - 带有reloadData的AKPickerView导致奇怪的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42932020/