以编程方式执行Segue并将参数传递到目标视图


174

在我的应用中,我有一个按钮,可以通过编程方式执行segue:

- (void)myButtonMethod
{
    //execute segue programmatically
    [self performSegueWithIdentifier: @"MySegue" sender: self];
}

我想知道是否有一种方法可以引用目标视图并将其传递一些参数。

我知道在prepareForSegue方法中,我可以用:来引用它myDestinationViewController *vc = [segue destinationViewController];,但是我不知道如何以编程方式执行segue。

你有什么想法?

谢谢,yassa


更新:

我很抱歉这个问题!!!我只是发现,即使以编程prepareForSegue方式调用segue,该方法还是会被调用,因此有可能以相同的常用方式传递参数。


44
将更新添加为答案并接受它,以便人们知道已经回答了:)
danielbeard 2012年

添加答案,评论以进行通知。
DanSkeel 2012年

11
您应该在下面将答案标记为正确答案,以便人们知道答案已经答案。
林登·福克斯

Answers:


107

答案很简单,即触发segue的方式没有任何区别。

prepareForSegue:sender:在任何情况下都将调用该方法,这是您在其中传递参数的地方。


3
这仍然令我感到困扰-这意味着我必须在一个地方触发segue,在这里我想将要作为参数发送的数据与其他任何东西都很好地隔离开,但是要将数据添加到一个完全不同的地方-prepareForSegue,在这里对需要传递的数据一无所知。意思是,我必须在两个不同功能(一个触发segue,另一个触发准备)共享的上下文中,用该数据创建一个状态。我不想脏状态时,所有我需要的是打开一些数据的新观点...
NeverwinterMoon

使用发送方传递配置目标VC所需的上下文
陷阱

我假设在发件人中传递有效载荷是一种反模式。它应该仅包含有关谁触发了segue的信息,而不是触发segue的事物打算进一步传递的数据。
NeverwinterMoon,

来自发件人的官方文档:“此对象可在实际搜索期间用于提供信息。”
NeverwinterMoon,

1
是的,不要传递实际的有效负载,传递上下文,例如哪个单元格/按钮/索引/等触发了序列。
捕手
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.