无法设置默认值 UIPicker swift 2

Can't set default value UIPicker swift 2

我有一个 swift 项目,其中包含一个来自 tableview 的自定义单元格,在其中我有一个标签来显示 UIPicker 的值。当你按下标签时,UiPicker 出现在键盘上,我不想为我的 UIPicker 设置默认值,我用这两种方法尝试了很多不同的技术: selectRow(),没有成功,这是我的 CustomCell 代码:

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])
        }
    }

}

更新了您的代码。
你没有设置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])
        }
    }
}