2017-03-21 3 views
1

私はライブラリhttps://github.com/Akkyie/AKPickerView-Swiftから水平AKPickerViewを持っています。 AKPickerViewの選択された項目は下線と大きなフォントを取得します。reloadDataのAKPickerViewは奇妙な動作になります

私のデモはこれまでに作成したものを示していますが、選択項目の下線と大きなフォントを作成することはできますが、私の実装は奇妙な動作につながります。他のセルは、ここで見られるような項目を設定した後に奇妙な動作:

picker view

私はそれがreloadDataとデキュー細胞に関係していると思いますが、私はこのエラーを引き起こしていただきました、私の希望の結果を達成するためにどのようには考えていますか?

コード:

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

答えて

0

私は、ライブラリからコードを更新することにより、この問題を修正しました。

変更は次のとおり

  • オーバーライドisSelected細胞から、この方法は、セル変更を登録します。

詳しい情報はで見つけることができます:https://github.com/Akkyie/AKPickerView-Swift/issues/35

SimonArcherは、正しい解決策を持っています。