【发布时间】:2021-12-05 04:24:14
【问题描述】:
我是新编码,遇到了我的第一个主要障碍。希望有人可以提供帮助。我正在尝试制作拳击比赛计时器。我已经让 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
}
}
【问题讨论】:
-
didSelectRow不应有返回值 (developer.apple.com/documentation/uikit/uipickerviewdelegate/…)。你能解释一下你想要完成什么吗?您的问题是“我找不到使用 didSelectRow 从代码中获取数字的方法”,但不清楚“获取代码中的数字”是什么意思。和他们做一个计算?将它们显示在其他地方? -
知道您可以随时查询选择器的选定行可能会有所帮助:developer.apple.com/documentation/uikit/uipickerview/…