5

只是想知道发件人对象。

我知道您可以在该方法中访问它,prepareForSegue...但它在下一个中是否可用destinationViewController

即在viewDidLoad我可以访问segueSender对象或其他东西吗?

我从未在文档中看到过这个,我只是认为它可能有用。

为清晰而编辑

我不是在问如何执行 segue 或找到 segue 或类似的东西。

假设我有两个视图控制器(VCA 和 VCB)。

从 VCA 到 VCB 有一个带有标识符“segue”的 segue。

在 VCA 中,我运行...

[self performSegueWithIdentifier:@"segue" sender:@"Hello world"];

我的问题是我可以从 VCB 访问 @"Hello world" 字符串还是仅prepareForSegue...在 VCA 内部的方法中可用?

即我可以从目标控制器访问 segue 发件人对象吗?

4

3 回答 3

2

是的你可以。

老问题,但我会使用 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中你segue有一个var来接受传递的对象

class NextViewController: UIViewController {

    var <# sentThroughObject #> = AnyObject!()

 //cast <# sentThroughObject #> as! <#your object#> to use
}   

更新:斯威夫特 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#>?
于 2015-08-28T06:23:06.717 回答
0

你总是可以从 storbyoard 得到一个 segue,然后得到sourceViewController. 像这样的东西:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"myStorboard" bundle:nil];
UIStoryboardSegue *mySegue = [storyboard instantiateViewControllerWithIdentifier:@"mySegue"];
[mySegue sourceViewController]; 

编辑:评论打败了我。;)

于 2013-07-10T08:58:02.357 回答
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 命名,并为对象声明一个属性以在目标视图控制器中传递。

于 2013-07-10T09:17:18.750 回答