【问题标题】:Can't set default value UIPicker swift 2无法设置默认值 UIPicker swift 2
【发布时间】:2023-04-01 15:50:02
【问题描述】:

我有一个 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])
        }
    }

}

【问题讨论】:

    标签: swift2 uipicker


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-27
      • 1970-01-01
      • 1970-01-01
      • 2016-08-05
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 2017-07-22
      相关资源
      最近更新 更多