我有一个库中的水平AKPickerViewAKPickerView中的选定项将获得下划线和更大的字体。
我的演示显示了我迄今为止创建的内容,可以为所选项目创建下划线和更大的字体。。但是我的实现导致了一些奇怪的行为。其他单元格在设置项目后的行为异常,如图所示:
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/

10-08 21:06