首页 > 解决方案 > 试图从 3 个组件 pickerView 中获取 3 个单独的整数

问题描述

我是新编码,遇到了我的第一个主要障碍。希望有人可以提供帮助。我正在尝试制作拳击比赛计时器。我已经让 pickerview 正确显示轮数、时间和休息时间。但是,我找不到使用 didSelectRow 从代码中获取数字的方法。我觉得我错过了一个变量或其他东西,但我真的不确定。非常感谢您的帮助!这是我到目前为止所拥有的

编辑:我正在使用三种不同的选择器视图。一个用于回合,一个用于每回合的计时器,一个用于回合之间的休息时间。如果可能的话,我宁愿保持这种状态!

导入 UIKit

类 ViewController:UIViewController、UIPickerViewDelegate、UIPickerViewDataSource{

@IBOutlet weak var roundsPicker: UIPickerView!
@IBOutlet weak var timePicker: UIPickerView!
@IBOutlet weak var restPicker: UIPickerView!

var roundsPickerOptions = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
var timePickerOptions = [1, 2, 3, 4, 5]
var restPickerOptions = [30, 60, 90, 120]

var round = 0
var time = 0
var rest = 0

override func viewDidLoad() {
    
    roundsPicker.delegate = self
    roundsPicker.dataSource = self
    timePicker.delegate = self
    timePicker.dataSource = self
    restPicker.delegate = self
    restPicker.dataSource = self
    
    super.viewDidLoad()
    
}
    
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        if pickerView.tag == 1 {
            return roundsPickerOptions.count
        } else if pickerView.tag == 2 {
            return timePickerOptions.count
        } else {
            return restPickerOptions.count
        }
    }

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    if pickerView.tag == 1 {
        return "\(roundsPickerOptions[row]) rounds"
    }else if pickerView.tag == 2 {
        return "\(timePickerOptions[row]) min."
    }else {
        return "\(restPickerOptions[row]) sec."
    }
}

//这是我迷路的地方!我都不知道写什么了!!!

private func pickerView(_ pickerView: UIPickerView, didSelectRow: Int, inComponent: Int) -> Int {
    
    if pickerView.tag == 1 {
        return round
    }else if pickerView.tag == 2 {
        return time
    }else {
        return rest
    }
}

标签: swiftxcodeviewpicker

解决方案


私有函数pickerView(_pickerView:UIPickerView,didSelectRow:Int,inComponent:Int){

if pickerView.tag == 1 {
    round = roundsPickerOptions[didSelectRow]
}else if pickerView.tag == 2 {
    time = timePickerOptions[didSelectRow]
}else {
    rest = restPickerOptions[didSelectRow]
}

}


推荐阅读