Swift 如何从UIPickerView获取用户选择的值?
这就是我试图实现的目标: 我想获取用户从两个不同的PickerView中选择的值,并在文本字段中显示该值Swift 如何从UIPickerView获取用户选择的值?,swift,xcode,uipickerview,Swift,Xcode,Uipickerview,这就是我试图实现的目标: 我想获取用户从两个不同的PickerView中选择的值,并在文本字段中显示该值 let drivingGear = ["1", "12", "36", "60", "84"] let boxVal = chooseDrivingGear let boxVal2 = chooseDrivenGear1 let newVal = boxVal / boxVal2 resultBox1.text = newVal 然而,我无法让它发挥作用,
let drivingGear = ["1", "12", "36", "60", "84"]
let boxVal = chooseDrivingGear
let boxVal2 = chooseDrivenGear1
let newVal = boxVal / boxVal2
resultBox1.text = newVal
然而,我无法让它发挥作用,因此我现在尝试以下方法:
@IBAction func chooseBox1Pressed(_sender: UIButton) {
sender.isHidden = true
if chooseDrivingGear.isHidden {
chooseDrivingGear.isHidden = false
}
if chooseDrivingGear[row] == "1" {
let v1 = 1
}
但ChoosedDrivingGear[row]显示此错误:使用未解析的标识符“row”
(pickerview的其他代码)更新:
您只需尝试从
pickerViews
获取selectedRow
,获取所选行的值,并根据需要对值执行计算,以显示在文本字段中
我在下面提供了一个示例代码
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate
{
@IBOutlet weak var pickerView1: UIPickerView!
@IBOutlet weak var pickerView2: UIPickerView!
@IBOutlet weak var textField: UITextField!
let drivingGear = ["1", "12", "36", "60", "84"]
override func viewDidLoad()
{
super.viewDidLoad()
}
@IBAction func showResult(_ sender: UIButton)
{
let val1 = self.drivingGear[self.pickerView1.selectedRow(inComponent: 0)]
let val2 = self.drivingGear[self.pickerView2.selectedRow(inComponent: 0)]
if let intVal1 = Int(val1), let intVal2 = Int(val2)
{
let result = intVal1 / intVal2
self.textField.text = String(result)
}
}
func numberOfComponents(in pickerView: UIPickerView) -> Int
{
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
return self.drivingGear.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
return self.drivingGear[row]
}
}
如果您仍然面临任何问题,请告诉我。您在哪里定义了“行”?如果我是在这里定义的,我有这个if语句,因为否则我只有创建pickerview的常规函数。如果pickerView.tag==0{chooseBox1.setTitle(drivingGear[row],for:.normal)choosedDrivingGear.isHidden=true chooseBox1.isHidden=false}您可以在实际获取选择器值的位置添加代码段吗?因为在您当前的帖子中,没有pickerView的代码。因为基于您的代码并尝试,我们可以帮助您。我已经为我的picker视图添加了其他代码,谢谢。虽然这不能回答您的问题,但我建议使用。我经常使用它,它很简单,效果很好。(无从属关系)showResult函数…除了我已经拥有的函数之外,我还必须创建它吗?或者我可以在我的chooseBox1函数中加入你的内容吗?如果没有,我是否应该控制并拖动文本框来创建该函数?在两个选择器视图都具有选定值后,我希望文本字段显示结果。然后创建一个按钮显示结果
,并在按钮单击事件中,在文本字段中显示结果。这就是showResult方法所做的。我做了这个@iAction func showResultBox1(uSender:Any){let val1=self.drivingGear[self.choosedDrivingGear.selectedRow(component:0)]让val2=self.drivingGear[self.choosedDrivingGear.selectedRow(component:0)]如果let intVal1=Int(val1),则让intVal2=Int(val2){let result=intVal1/intVal2 self.title=String(result)}resultBox1.isHidden=false}但它不会更改按钮以显示计算
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate
{
@IBOutlet weak var pickerView1: UIPickerView!
@IBOutlet weak var pickerView2: UIPickerView!
@IBOutlet weak var textField: UITextField!
let drivingGear = ["1", "12", "36", "60", "84"]
override func viewDidLoad()
{
super.viewDidLoad()
}
@IBAction func showResult(_ sender: UIButton)
{
let val1 = self.drivingGear[self.pickerView1.selectedRow(inComponent: 0)]
let val2 = self.drivingGear[self.pickerView2.selectedRow(inComponent: 0)]
if let intVal1 = Int(val1), let intVal2 = Int(val2)
{
let result = intVal1 / intVal2
self.textField.text = String(result)
}
}
func numberOfComponents(in pickerView: UIPickerView) -> Int
{
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
return self.drivingGear.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
return self.drivingGear[row]
}
}