2015-06-03 80 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的目标视图控制器是作为结果出现的视图控制器。