从自定义转换中引用presentingViewController

Posted

技术标签:

【中文标题】从自定义转换中引用presentingViewController【英文标题】:Reference to presentingViewController from custom transition 【发布时间】:2014-01-14 21:53:22 【问题描述】:

我已经设置了一个自定义转换,即设置similar to this tutorial here。

我现在要做的是更新(下方)UIViewController 上的 BOOL。这是将控制器显示在顶部的控制器。

我如何获得以下控制器的访问权限/指针?我试过 self.presentingViewController 但这指向UINavigationController

自定义过渡信息 底部控制器是UIViewControllerTransitioningDelegate。控制器通过 segue 链接。以下在prepareForSegue

self.animationController = [[MESGuessGameTurnZoomAnimation alloc] init];
UIViewController *destVC = segue.destinationViewController;    
destVC.transitioningDelegate = self;

当目标视图控制器出现时,用户可以单击返回,它只需运行以下(目前)返回到原始视图控制器:

[self dismissViewControllerAnimated:YES completion:nil];

【问题讨论】:

【参考方案1】:

听起来您正试图将数据从presentingVC 传递回presentingVC。如果是这种情况,无论您是否使用新的 ios 7 自定义动画过渡,方法都是相同的。

您有 2 个选项,如果您使用标准过渡或自定义过渡,则同样如此。

    单击返回时使用委托模式。这样presentingVC调用dismiss并可以访问presentingVC及其任何属性。

    How do I set up a simple delegate to communicate between two view controllers?

    使用展开转场。这完成了同样的事情,但使用故事板。 https://developer.apple.com/library/ios/technotes/tn2298/_index.html

您可以使用transitioningContextprepareForSegue: 和animationController 的animateTransition: 方法中访问两个视图控制器,但我认为您只是在谈论传回数据,这可以使用上述方法之一来完成。

【讨论】:

谢谢,你能不能只为 push segue 创建一个 unwind segue?我的是一个带有自定义过渡的模型,但是在故事板中将一个按钮拖到 Exit 并没有做任何事情 你必须首先在你的展示VC中创建展开方法。然后它会在您拖动退出时显示。签名是-(IBAction)unwindToViewController:(UIStoryboardSegue *)sender。通常,展开 segue 会为您解散,但使用自定义转换则不会,因此您需要在 unwind 方法中调用解散。我在 WWDC Session 218 的示例代码中做了这件事:github.com/soleares/SOLPresentingFun。单击“选项”,这是一个带有展开转场的模型自定义过渡。 unwind sequ 方法在 SOLViewController.m 的末尾。 @Jesse- 谢谢你。当您说“通常展开转场会为您解散,但使用自定义转换时不会”......我发现我不必调用 self dismissViewController... 只需让展开转场完成所需的移动。事实上,通过包含 dismissViewController 方法,我会收到关于在另一个动画制作时解雇的警告? 如果你不需要,那么你就准备好了。我发现当我在关闭时使用自定义动画转换进行模态关闭时,我需要在展开操作中手动调用dismissViewController 来启动关闭转换。 谢谢杰西 - 我会接受答案。我还有另一个问题***.com/questions/21142700/… - 我相信这与过渡委托不是 nil 和控制器没有被释放有关,如果你也知道的话。谢谢

以上是关于从自定义转换中引用presentingViewController的主要内容,如果未能解决你的问题,请参考以下文章

如何从自定义实现中引用“正常”弹簧数据存储库?

如何从自定义类添加对我的 Web 服务代理的引用

如何从自定义表格视图单元类中获取对表格视图控制器的引用

从自定义string类型理解右值引用

从自定义string类型理解右值引用

从自定义string类型理解右值引用