2016-05-04 3 views
1

У меня есть быстрый проект с пользовательской ячейкой из tableview, ans внутри. У меня есть метка, отображающая значение UIPicker. UiPicker появится на клавиатуре, когда вы нажмете метку, я не смогу установить значения по умолчанию для моего UIPicker, я пробовал много разных методов с помощью двух методов: selectRow(), без успеха, вот мой код CustomCell :Невозможно установить значение по умолчанию UIPicker swift 2

import UIKit 

class CustomCell: UITableViewCell, UIPickerViewDataSource, UIPickerViewDelegate { 


    @IBOutlet weak var answer: UITextField! 

    var delegate: QuestionSelectorCellDelegate? 
    var pickOption: [String] = [] 
    var pickerView:UIPickerView = UIPickerView() 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     // Initialization code 
    } 



    @IBAction func editBeginQuestionSelectorCell(sender: UITextField) { 
     pickerView = UIPickerView() 
     pickerView.delegate = self 
     sender.inputView = pickerView 
    } 


    func displayBlock(block: Block){ 
     if block.answers != nil { 
      pickOption = block.answers! // block.answers! = ["blue","red","green"] for example 
     } 

    } 


    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
     return 1 
    } 

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     return pickOption.count 
    } 

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
     return pickOption[row] 
    } 

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
     if row < pickOption.count { 
      answer.text = pickOption[row] 
      delegate?.updateQuestionSelectorCell(self, rep: pickOption[row]) 
     } 
    } 

} 

ответ

3

Обновлен ваш код.
Вы не установили pickerView.dataSource!
Если я понял ваш вопрос, вы хотите, чтобы элемент был выбран по умолчанию, кроме элемента с индексом 0. Я также добавил это.

import UIKit 

class CustomCell: UITableViewCell, UIPickerViewDataSource, UIPickerViewDelegate { 


    @IBOutlet weak var answer: UITextField! 

    var delegate: QuestionSelectorCellDelegate? 
    var pickOption: [String] = [] 
    var pickerView:UIPickerView = UIPickerView() 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     // Initialization code 
    } 



    @IBAction func editBeginQuestionSelectorCell(sender: UITextField) { 
     pickerView = UIPickerView() 
     pickerView.delegate = self 

     // --- Thats what I added --- 
     pickerView.dataSource = self 
     let indexOfDefaultElement = 1 // Make sure that an element at this index exists 
     pickerView.selectRow(indexOfDefaultElement, inComponent: 0, animated: false) 

     sender.inputView = pickerView 
    } 


    func displayBlock(block: Block){ 
     if block.answers != nil { 
      pickOption = block.answers! // block.answers! = ["blue","red","green"] for example 
     } 

    } 


    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
     return 1 
    } 

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     return pickOption.count 
    } 

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
     return pickOption[row] 
    } 

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
     if row < pickOption.count { 
      answer.text = pickOption[row] 
      delegate?.updateQuestionSelectorCell(self, rep: pickOption[row]) 
     } 
    } 
} 
+0

Большое спасибо! Он отлично работает :) – fandro