Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何从UIPickerView获取用户选择的值?_Swift_Xcode_Uipickerview - Fatal编程技术网

Swift 如何从UIPickerView获取用户选择的值?

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 然而,我无法让它发挥作用,

这就是我试图实现的目标:

我想获取用户从两个不同的PickerView中选择的值,并在文本字段中显示该值

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]
    }
}