如何使用UIPickerview在两个viewcontrollers之间导航

时间:2016-01-28 19:13:03

标签: ios swift uiviewcontroller uipickerview

我正在尝试使用UIPickerview在两个viewcontrollers之间导航,所以我首先学会了如何使用didSelectRow来更改标签的标题,然后我尝试使用一些代码导航到另一个viewcontroller,但这不起作用。

我使用的代码是:

import UIKit

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

@IBOutlet var label: UILabel!

@IBOutlet var pickerView: UIPickerView!
var food = ["hello", "hi", "hey"]

var placementAnswer = 0
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    pickerView.delegate = self
    pickerView.dataSource = self


}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.

}

public func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {

    return 1
}
public func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {

    return food.count 
}

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {

    return food[row]
}

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

@IBAction func labelChanged(sender: UIButton) {

    if (placementAnswer == 0){

    }else if (placementAnswer == 1){

        let view2 = self.storyboard?.instantiateViewControllerWithIdentifier("view2") as! ViewController2
        self.navigationController?.pushViewController(view2, animated: true)

    }else if (placementAnswer == 2){
}
}
}

1 个答案:

答案 0 :(得分:0)

正如paranoidcoder所指出的,我不确定你的labelChanged方法是否被调用,这可能是你现有代码的问题。

我假设你想在选择器视图中选择某一行后更改视图控制器。在这种情况下,将if语句用于更改didSelectRow中的视图将是最有意义的。

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) 
 {
     placementAnswer = row // unnecessary variable

     if (placementAnswer == 0){}
     else if (placementAnswer == 1)
     {
        let view2 = self.storyboard?.instantiateViewControllerWithIdentifier("view2") as! ViewController2
        self.navigationController?.pushViewController(view2, animated: true)
     }
     else if (placementAnswer == 2) {}
}