选择器视图与按钮转到下一页

时间:2016-11-18 11:04:02

标签: ios swift uipickerview

我正在尝试做一个pickerView和一个按钮,当你在pickerView中选择你的选项时,它会进入相关的页面。

到目前为止,当你在选择器视图中选择选项进入相关页面时,我已经到了这一点,但我想要的是选择,然后单击按钮转到页面。

 import UIKit

 class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {

  @IBOutlet weak var pickerView: UIPickerView!

var selection = ["Page 1", "Page 2", "Page 3"]


override func viewDidLoad() {
    super.viewDidLoad()

    pickerView.dataSource = self
    pickerView.delegate = self


}

@IBAction func SelectionBtn(_ sender: Any) {

    } 



func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return selection.count
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    let selected = selection[row]

    return selected
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {



    if (row == 0) {

    performSegue(withIdentifier: "red", sender: self)
    }
    else if (row == 1) {

    performSegue(withIdentifier: "blue", sender: self)
    }
    else {
    performSegue(withIdentifier: "green", sender: self)

        }
    }
  }

2 个答案:

答案 0 :(得分:1)

获取一个额外的变量来存储有关您选择的行的信息。

var rowSelected:Int! = -1

将选定的行存储到此变量中。

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
 rowSelected = row
}

在按钮操作期间,检查变量以执行所需的Segue。

@IBAction func actSegue(sender:Any){
    if row == 0 {
        performSegue(withIdentifier: "red", sender: self)
    }...
    ....
}

答案 1 :(得分:0)

您可以使用pickerView.selectedRow(inComponent: 0)

选择行
@IBAction func SelectionBtn(_ sender: Any) {
 let rowSelected = pickerView.selectedRow(inComponent: 0)
 if (rowSelected == 0) {

performSegue(withIdentifier: "red", sender: self)
}
else if (rowSelected == 1) {

performSegue(withIdentifier: "blue", sender: self)
}
else {
performSegue(withIdentifier: "green", sender: self)

    }
}