只是想知道发件人对象。
我知道您可以使用prepareForSegue...
方法访问它,但在下一个destinationViewController
中是否可以使用它?
即。在viewDidLoad
我可以访问segueSender
对象吗?
我从未在文档中看到过这种情况,我认为它可能有用。
编辑清晰度
我不会问如何执行segue或找到segue或类似的东西。
假设我有两个视图控制器(VCA和VCB)。
从VCA到VCB有一个segue,标识符为“segue”。
在VCA中我跑...
[self performSegueWithIdentifier:@"segue" sender:@"Hello world"];
我的问题是我可以从VCB访问@“Hello world”字符串,还是只能在VCA内的prepareForSegue...
方法中使用?
即。我可以从目标控制器访问segue发送者对象吗?
答案 0 :(得分:1)
所以答案是“不”。
感谢您的帮助。
答案 1 :(得分:1)
是的,你可以。
老问题但是我会在使用swift的答案中弹出
首先打电话
performSegueWithIdentifier("<#your segue identifier #>", sender: <#your object you wish to access in next viewController #>)
在prepareForSegue
中override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let dest = segue.destinationViewController as! <# your destination vc #>
dest.<# sentThroughObject #> = sender
}
}
然后在vc中你有一个var接受传递的对象
class NextViewController: UIViewController {
var <# sentThroughObject #> = AnyObject!()
//cast <# sentThroughObject #> as! <#your object#> to use
}
更新:SWIFT 3
performSegue(withIdentifier: "<#your segue identifier #>", sender: <#Object you wish to send to next VC#>)
override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
let destination = segue.destinationController as! <# cast to your destination VC #>
destination.sentViaSegueObject = sender as? <#your object#>
}
在目标VC中有一个属性来接受发送的对象
var sentViaSegueObject = <#your object#>?
答案 2 :(得分:0)
你总是可以从storbyoard获得一个segue,然后获得sourceViewController
。像这样:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"myStorboard" bundle:nil];
UIStoryboardSegue *mySegue = [storyboard instantiateViewControllerWithIdentifier:@"mySegue"];
[mySegue sourceViewController];
编辑: 评论打败了我。 ;)
答案 3 :(得分:0)
如果您尝试将对象从一个视图控制器传递到下一个视图控制器,您可能需要执行以下操作:
在父视图控制器中:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Only if you have multiple segues.
if ([segue.identifier isEqualToString:@"NameOfYourSegue"]) {
// Cast necessary to access properties of the destination view controller.
[(YourChildViewController *)segue.destinationViewController setObject:theObjectToPass];
}
}
您需要在故事板中为segue指定一个名称,并声明该对象的属性以在目标视图控制器中传递。