2017-03-21 6 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 정확한 솔루션을 갖는다.