2011-02-03 148 views
2

我有一个UITabbarController与UINavigationController。 NavigationController中的视图呈现一个MVC(AddClockNavigationController)。这个MVC有一个带有视图的笔尖和一个UINavigationController。 NavigationController.view作为子视图添加到MVC的视图中。dismissModalViewControllerAnimated不工作

我的MVC中的NavigationController有两个按钮,一个是Cancel和一个Done。当按其中任何一个时,MVC应该被解雇。 这些按钮的IBActions在UINavigationController视图(AddClockViewController)中,但每当按下它们时,MVC都不会消失。 如果我将这些动作放入MVC中,它确实会消失。 如果我把函数放在我的MVC中,并使用[self.parentViewController myFunction]从我的viewController调用它,它并不会消失。

我怎样才能让它从我的视野中消失?

我想我的ex is很乱,但我希望你能理解。
从我的IB一个观点: enter image description here

最好的问候,
保罗Peelen

编辑 我与[self dismissModalViewControllerAnimated:YES];试过,[self.parentViewController dismissModalViewControllerAnimated:YES];[self.navigationController dismissModalViewControllerAnimated:YES];[self.parentViewController.navigationController dismissModalViewControllerAnimated:YES];和,如前所述,用在父视图中解除它的功能。什么都没有

回答

7

当某个视图控制器呈现另一个视图控制器时,它将成为父视图控制器。所以,如果您想放弃你的模态视图控制器,那么你必须选择:

  1. 从父视图控制器调用

    [自dismissModalViewControllerAnimated:YES];

OR

  1. 从模态视图控制器呼叫

    [self.parentViewController dismissModalViewControllerAnimated:YES];

实际上您并不需要导航控制器(因为您不需要按下/弹出任何视图控制器)。只需将UINavigationBar添加到您的MVC并在其上放置按钮即可。然后添加行动给他们,并做选择#2。 您的代码无法使用,因为导航控制器没有父项,因为它没有显示为模式。

+0

嗨,我试过......但它不会工作。此外,第二个NavigationController的原因是因为视图加载(一个UIViewController)扣留UITableView与单元格推到下一个视图。这不适用于“公正”和NavigationBar。 – 2011-02-03 07:57:01

4

一种情况是在调用viewController的viewDidAppear之前调用dismiss {Modal} ViewControllerAnimated。在这种情况下,呈现的是动画== YES。在呈现完全出现之前,它被解雇了。

为了解决这个问题,你需要检查在时间解雇了点,检查是否viewDidAppear被称为如果不是,推迟解聘的 - viewDidAppear。