知道ViewController因解雇而出现(不是segue)

时间:2013-02-26 22:51:42

标签: iphone ios ipad segue dismiss

我正试图弄清楚如何在我的rootViewController中抓取一个只是解散自己的类。我有几个选项可以解雇我的rootViewController,我需要知道它是否来自一个实例,以便相应地更改一些UI。

我正在寻找与[self presentingViewController]类似的东西,除了因为解雇而不是segue而出现viewController。是否有内置的方法来抓住这个?

2 个答案:

答案 0 :(得分:2)

我基本上通过跟踪我是否访问了我关注的一个视图控制器来解决这个问题。这样,我只是在segue之前在viewController中设置了一个属性,所以我已经知道当我返回时我需要处理UI更改。感谢您对放松细分的评论。我很快就会在将来实施它们!

答案 1 :(得分:1)

更新

这个答案中的所有内容都是旧闻 - 因为XCode 4.5我们可以使用展开segue返回到任何以前的viewController并在该控制器中触发展开方法。 (感谢@rdelmar)

What are Unwind segues for and how do you use them?

<小时/> 旧方式/代码方式..理想情况下,代理人需要实现特定方法

当一个班级自我解散时,你无法抓住它,因为它被......解雇了。您需要在被解雇之前暂停,然后了解解雇。

对此进行一点阐述,课程通常不会解雇,他们自己的班级会解雇。这里的混淆方法可能是UIViewController方法:

- (void) dismissViewControllerAnimated:

的简写
- (void) [[self presentingViewController] dismissViewControllerAnimated:completion:nil]

呈现的viewController有一个属性presentedViewController,它保留被解除的对象 - 直到它被解除。当presentsViewController解散时,它会将它的presentedViewController属性重置为nil。但是你总是可以选择将该引用复制到另一个(强/保留)属性之前,并在解雇事件之后进行询问。

引用苹果:

  

“如果要保留对接收者呈现的视图控制器的引用,请在调用[dismissViewControllerAnimated:completion:之前获取presentViewController属性中的值:    ]“。