2015-10-11 39 views
0

我是Swift新手,可以使用一些关于如何使用按钮单击时使用IBAction来触发segue的建议。我能够继续使用选取器,但我希望按钮触发赛格。我尝试触发IBAction内部的函数,但这不起作用。欣赏任何建议。谢谢。Swift UIPickerView Trigger与IBAction争论

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

    switch (row) { 

    case 0: self.performSegueWithIdentifier("Segue0", sender: self) 
    break; 
    case 1: self.performSegueWithIdentifier("Segue1", sender: self) 
    break; 
    case 2: self.performSegueWithIdentifier("Segue2", sender: self) 
    break; 
    case 3: self.performSegueWithIdentifier("Segue3", sender: self) 
    break; 
    case 4: self.performSegueWithIdentifier("Segue4", sender: self) 
    break; 
    default: break; 

    } 

下面是标准按钮:

@IBAction func selectButton(sender: AnyObject) { 


} 

回答

0

如果你正在寻找的是如何确定哪一行从按钮功能内选择,你可以使用UIPickerView.selectedRowInComponent(_:):

self.performSegueWithIdentifier("Segue\(row)", sender: self) 
@IBOutlet weak var picker: UIPickerView! // Reference to picker from storyboard. 
@IBAction func selectButton(sender: AnyObject) { 
    // Get the selected row. You only have one component, so the parameter is 0. 
    let row = picker.selectedRowInComponent(0) 

    // Switch block here 
} 

事实上,如果你的塞格斯实际上名为“Segue0”,“Segue1”,等等,那么你就可以更换开关块

但是,如果你使用更具描述性的名称赛格瑞(因为我希望你是),那么你也可以在存储阵列中的SEGUE标识符和只使用row作为索引到数组:

let segues = ["thisIsASegue", "thisIsAnotherSegue", "etc"] 

// In the function: 
self.performSegueWithIdentifier(segues[row], sender: self) 
+0

谢谢(你的)信息。是的,我在我的制作应用程序中使用了更多描述性的segue名称。我会研究UIPickerView.selectedRowInComponent。 – Boomspot

0

我管理这个工作使用下面的就搞定了。希望有任何意见或更优雅的解决方案。 :)

增加了一个全局变量来保存选择的机行:

var rowSelected = 0 
var pickerData: [String] = [String]() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Connect data: 
    self.locationPicker.delegate = self 
    self.locationPicker.dataSource = self 

pickerData = ["Location 1", "Location 2", "Location 3", "Location 4", "Location 5"] 

// The number of columns of data 
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
    return 1 
} 

// The number of rows of data 
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return pickerData.count 
} 

// The data to return for the row and component (column) that's being passed in 
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    return "\(pickerData[row])" 

} 
// Capture the picker view selection 
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 

    rowSelected = row 


} 
@IBAction func selectButton(sender: AnyObject) { 

    switch (rowSelected) { 

    case 0: self.performSegueWithIdentifier("Segue0", sender: self) 
    break; 
    case 1: self.performSegueWithIdentifier("Segue1", sender: self) 
    break; 
    case 2: self.performSegueWithIdentifier("Segue2", sender: self) 
    break; 
    case 3: self.performSegueWithIdentifier("Segue3", sender: self) 
    break; 
    case 4: self.performSegueWithIdentifier("Segue4", sender: self) 
    break; 
    default: break; 




}