【发布时间】:2014-01-30 20:02:27
【问题描述】:
根据呈现当前视图控制器的视图控制器,我需要当前视图控制器被两个呈现视图控制器中的任何一个解除。
这是当前视图控制器中的方法:
-(void)goBack:(id)sender {
if ([self.presentingViewController.presentingViewController isKindOfClass:[InitialViewController class]])
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
else {
[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}
但它不起作用。我究竟做错了什么?非常感谢您!
【问题讨论】:
-
也许你应该多描述一下架构。您确定这是呈现的视图控制器情况而不是推送/弹出情况吗?如果是,您想区分什么?您真正想实现什么?
-
另外,请注意您所说的
presentViewController的视图控制器实际上可能不是presentingViewController。很容易对此感到困惑。 -
是的,对不起,我应该更准确。在某些情况下,我当前的视图控制器由 SecondViewController 呈现,以防万一由 FirstViewController 呈现。在其他情况下,我当前的视图由 FirstViewController 直接呈现。我的目标是,当当前视图控制器被关闭时,FirstViewController 会出现。
-
在这种情况下
self.presentingViewController.presentingViewController应该可以工作。它适用于我的机器。 -
可能问题是你在
if/else测试中写错了条件。使用日志记录来确保所做的选择是您所期望的。
标签: ios iphone objective-c uiviewcontroller