通过 unwind segue 传递数据
Posted
技术标签:
【中文标题】通过 unwind segue 传递数据【英文标题】:Pass data through unwind segue 【发布时间】:2015-06-03 14:29:22 【问题描述】:我一直在寻找这个问题的答案...我不知道如何。我知道我应该使用prepareForSegue
,但我不确定我应该输入什么。我试图从一个类中的 UIPickerView 传递一个变量(myLabel):
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
myLabel.text = pickerData[row]
到另一个班级。我已经有了 unwind 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 对象放置在目标控制器界面中,但您可以使用文本设置另一个标签,例如。
【讨论】:
我必须向 MyDestinationViewController 添加一个 NSString 变量,但除此之外您的解决方案有效,谢谢! 不客气。建议使用 String 而不是 NSString。【参考方案2】:prepareForSegue
在您将要展开的视图控制器的类中调用(之前推送或呈现的视图控制器,现在正在弹出或关闭)。 segue 的目标视图控制器是作为结果出现的视图控制器。
【讨论】:
以上是关于通过 unwind segue 传递数据的主要内容,如果未能解决你的问题,请参考以下文章
从 Unwind segue 触发时,Push segue 不起作用
使用 unwind segues 通过 UITableViewcell 推送数据