仅关闭2个模态呈现的视图控制器中的1个

时间:2015-12-02 00:28:25

标签: objective-c uipopovercontroller modalviewcontroller

UINavigation控制器用作模态弹出窗口,然后显示:

XYNavigationController *popoverNavigationController = [self.storyboard instantiateViewControllerWithIdentifier:@"XYNavigationController"];
popoverNavigationController.modalPresentationStyle = UIModalPresentationPopover;
XYCartViewController *cartVC = (XYCartViewController *)popoverNavigationController.topViewController;
[self presentViewController:popoverNavigationController animated:YES completion:nil];

当点击一个按钮时,另一个控制器XYEditViewController以模态方式呈现在模态popoverNavigationController之上。 XYEditViewController的取消按钮调用展开segue:

- (IBAction)unwindFromEdit:(UIStoryboardSegue *)segue {
    //a. [segue.sourceViewController dismissViewControllerAnimated:YES completion:nil];
    //b. [self.navigationController.topViewController dismissViewControllerAnimated:YES completion:nil];
    //c. [(XYCartViewController*)(segue.destinationViewController) dismissViewControllerAnimated:YES completion:nil];
    //d.
    [(XYNavigationController*)(((XYEditViewController*)(segue.sourceViewController)).presentingViewController) dismissViewControllerAnimated:YES completion:nil];

}

期待取消按钮只关闭顶部模态控制器,并尝试了上面的全部a,b,c,d,它们都解除了top和popover控制器。知道如何在这种情况下只解除顶级控制器吗?

1 个答案:

答案 0 :(得分:1)

解除弹出窗口中存在的控制器是一个巨大的问题(即错误),并且在iOS历史记录中这种行为已经多次改变的事实并没有帮助。我相信,基本上你不能使用放松信号。只需让取消按钮在显示的调用[self dismissViewControllerAnimated:]的视图控制器中执行操作。

(你还必须努力解决用户点击外面 popover的问题;默认情况下,这也可能会解除整个对,我认为这是错误的行为。)