将数据传回 UIPickerView
Pass data back to UIPickerView
我正在创建计时器应用程序,我希望用户能够编辑现有计时器。例如,当用户单击特定计时器时,他可以编辑小时、分钟和秒,我最初是从 UIPickerView 获得的。
我正在使用此代码获取新计时器的小时、分钟和秒数:
var hour: Int = 0
var minutes: Int = 0
var seconds: Int = 0
var name: String = ""
var totalSeconds: Int {
return hour * 3600 + minutes * 60 + seconds
}
}
extension TimerSelectViewController: UIPickerViewDelegate, UIPickerViewDataSource {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 3
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
switch component {
case 0:
return 25
case 1, 2:
return 60
default:
return 0
}
}
func pickerView(_ pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat {
return pickerView.frame.size.width/4
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
switch component {
case 0:
return "\(row) hr"
case 1:
return "\(row) min"
case 2:
return "\(row) sec"
default:
return ""
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
switch component {
case 0:
hour = row
case 1:
minutes = row
case 2:
seconds = row
default:
break;
}
}
但是当用户想要编辑计时器而不是创建新计时器时,我如何将数据传回 UIPickerView?
UIPickerView 有预选行的方法:https://developer.apple.com/documentation/uikit/uipickerview/1614382-selectrow
例如:
let picker = UIPickerView()
// 14:00:00 or 2:00:00 PM, add more select commands as needed
picker.selectRow(14, inComponent: 0, animated: false)
我正在创建计时器应用程序,我希望用户能够编辑现有计时器。例如,当用户单击特定计时器时,他可以编辑小时、分钟和秒,我最初是从 UIPickerView 获得的。
我正在使用此代码获取新计时器的小时、分钟和秒数:
var hour: Int = 0
var minutes: Int = 0
var seconds: Int = 0
var name: String = ""
var totalSeconds: Int {
return hour * 3600 + minutes * 60 + seconds
}
}
extension TimerSelectViewController: UIPickerViewDelegate, UIPickerViewDataSource {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 3
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
switch component {
case 0:
return 25
case 1, 2:
return 60
default:
return 0
}
}
func pickerView(_ pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat {
return pickerView.frame.size.width/4
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
switch component {
case 0:
return "\(row) hr"
case 1:
return "\(row) min"
case 2:
return "\(row) sec"
default:
return ""
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
switch component {
case 0:
hour = row
case 1:
minutes = row
case 2:
seconds = row
default:
break;
}
}
但是当用户想要编辑计时器而不是创建新计时器时,我如何将数据传回 UIPickerView?
UIPickerView 有预选行的方法:https://developer.apple.com/documentation/uikit/uipickerview/1614382-selectrow
例如:
let picker = UIPickerView()
// 14:00:00 or 2:00:00 PM, add more select commands as needed
picker.selectRow(14, inComponent: 0, animated: false)