对 segue 源视图控制器的引用

Posted

技术标签:

【中文标题】对 segue 源视图控制器的引用【英文标题】:Reference to the segue source view controller 【发布时间】:2013-05-26 15:41:24 【问题描述】:

在我的viewDidLoad 中,我想要一些基于之前控制器的自定义代码。

如何访问目标控制器的 viewDidLoad 中的 segue 源控制器或先前的 segue 标识符来处理这个问题?

【问题讨论】:

你的意思是在目标控制器中吗?你最后一句话不清楚。 【参考方案1】:

没有办法获得对创建您的 segue 的引用。您可以在目标控制器中创建一个属性(在我的示例中为 sourceVC),并在 prepareForSegue 方法中(在源视图控制器中)将 self 分配给该属性:

[(DestinationVCClass *)segue.destinationViewController sourceVC] = self;

【讨论】:

【参考方案2】:

您只需使用[self presentingViewController] 即可访问发出segue 的VC。对于这种情况,我通常喜欢将它与isMemberOfClass: 结合使用。

【讨论】:

这只有在 segue 是模态的情况下才有效,它不适用于推送。 这听起来像是他在谈论模态转场,但是不错的电话。 我通过调用这个方法得到了我的rootViewController,所以看起来逻辑有点破。【参考方案3】:

你在目的地的 unwinding segue 方法中执行以下操作

self.source = (UIStoryboardSegue *)segue.sourceViewController;

将源定义为目标中的 UIStoryboardSegue。上面的行将给出来源或之前的转场。

【讨论】:

以上是关于对 segue 源视图控制器的引用的主要内容,如果未能解决你的问题,请参考以下文章

如何在推送segue后让源视图控制器不会消失?

自定义 Segue NavBar 后退按钮

以编程方式从 UIView 执行 Segue

两个不同的按钮对同一个视图控制器执行 segue,但希望通过一个按钮禁用用户交互以进行 segue

如何在不使用 segue 的情况下在视图控制器之间传递图像

从一个 tableView 创建不同的 segue