我试图弄清楚如何在我的 rootViewController 中获取一个刚刚自行解散的类。我有几个选项可以解散回我的 rootViewController,我需要知道它是否来自一个实例,以便相应地更改一些 UI。
我正在寻找类似的东西,[self presentingViewController]
除了当 viewController 因为解雇而不是 segue 而出现时。有没有内置的方法来抓取这个?
我基本上通过跟踪我是否访问了我担心解雇的一个视图控制器来解决这个问题。那样的话,我只是在我 segue 之前在 viewController 中设置一个属性,所以我已经知道当我返回时我需要处理 UI 更改。感谢您对 unwind segues 的评论。我肯定会在未来很快实施它们!
更新
这个答案中的所有内容都是旧消息 - 从 XCode 4.5 开始,我们可以使用展开 segues 来返回任何以前的 viewController 并触发该控制器中的展开方法。(感谢@rdelmar)
当一个类自行解散时,你不能抓住它,因为它被……解散了。你需要在它被解雇之前持有它,然后知道解雇。
稍微详细说明一下,班级通常不会解雇自己,他们自己的班级会解雇自己。这里的混淆方法可能是 UIViewController 方法:
- (void) dismissViewControllerAnimated:
这是一个简写
- (void) [[self presentingViewController] dismissViewControllerAnimated:completion:nil]
呈现的 viewController 具有一个属性,该属性presentedViewController
会保留该被解除的对象 - 直到它被解除。当presentingViewController 关闭时,它会将其presentedViewController
属性重置为nil。但是您始终可以选择在解雇事件之前将该引用复制到另一个(强/保留)属性中,并在解雇事件之后对其进行询问。
引用苹果:
“如果您想保留对接收者呈现的视图控制器的引用,请在调用 [dismissViewControllerAnimated:completion:] 之前获取 presentViewController 属性中的值。”