2015-06-03 82 views
0

我一直在尋找這個答案...我不知道如何通過展開順序傳遞數據。我知道我應該使用prepareForSegue,但我不知道我應該放我試圖通過從一個UIPickerView一個變量(myLabel)中的一類:傳遞數據通過展開segue

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    myLabel.text = pickerData[row] 
} 

到另一個類。我已經放開了segue代碼,但不知道把prepareForSegue放在哪裏以及放什麼。

讓我知道如果我的問題需要更多的澄清。

回答

1

如果我正確理解你的問題,你應該做的是這樣的:

class MyPickerController : UIViewController { 
    @IBOutlet weak var myLabel: UILabel! 

    var pickerData:[String] 

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    myLabel.text = pickerData[row] 
    performSegueWithIdentifier("mySegueName", sender: self) 
    } 

    func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let myController = segue.destinationController as? MyDestinationViewController { 
     myController.text = myLabel.text 
    } 
} 

這將通過標籤文本到MyDestinationViewController實例。 請注意,我不通過UILabel對象,但文本。 例如,您不能將該UILabel對象放置在目標控制器界面中,但您可以使用文本和其他標籤。

+0

我不得不添加一個NSString變量到MyDestinationViewController,但除了你的解決方案工作,謝謝! – jsjs2626

+0

不客氣。建議使用String而不是NSString。 – ncerezo

1

prepareForSegue在視圖控制器的類中被調用,您將從(以前被推送或呈現的視圖控制器,現在正在彈出或解散)展開。 segue的目標視圖控制器是作爲結果出現的視圖控制器。