我一直在寻找答案...我不知道如何通过展开segue传递数据。我知道我应该使用prepareForSegue
,但我不确定我应该放入什么。我试图在一个类中从UIPickerView传递一个变量(myLabel):
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
myLabel.text = pickerData[row]
}
到另一个班级。我已经有了unwind segue代码,但是不知道在哪里放置prepareForSegue以及放入什么内容。
如果我的问题需要进一步澄清,请告诉我。
答案 0 :(得分:1)
prepareForSegue
,您将从(先前已推送或呈现的视图控制器,现在正在弹出或关闭)中展开。 segue的目标视图控制器是将作为结果显示的视图控制器。
答案 1 :(得分: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对象放在目标控制器界面中,但您可以使用该文本设置另一个标签,例如。