我有一个带UINavigationController的UITabbarController。 NavigationController中的视图呈现MVC(AddClockNavigationController)。这个MVC有一个带有视图的nib和一个UINavigationController。 NavigationController.view作为子视图添加到MVC的视图中。
我的MVC中的NavigationController有两个按钮,一个取消和一个完成。当按下其中任何一个时,MVC应该被解雇。 这些按钮的IBActions位于UINavigationController的视图(AddClockViewController)中,但每当按下它们时,MVC就不会消失。 如果我把动作放到MVC中,它就会消失。 如果我把函数放在我的MVC中并使用[self.parentViewController myFunction]从我的viewController调用它,它就不会消失。
我怎样才能让它从我的视线中消失?
我想我的言论非常混乱,但我希望你理解它。
我IB的观点:
最好的问候,
保罗佩伦
修改
我已尝试使用[self dismissModalViewControllerAnimated:YES];
,[self.parentViewController dismissModalViewControllerAnimated:YES];
,[self.navigationController dismissModalViewControllerAnimated:YES];
,[self.parentViewController.navigationController dismissModalViewControllerAnimated:YES];
,并且如上所述,使用parentView中的函数解除它。什么都行不通。
答案 0 :(得分:7)
当某个视图控制器呈现另一个视图控制器时,它将成为父视图控制器。因此,如果你想解雇模态视图控制器,那么你必须选择:
[self dismissModalViewControllerAnimated:YES];
OR
[self.parentViewController dismissModalViewControllerAnimated:YES];
您实际上不需要导航控制器(因为您不推/弹任何视图控制器)。只需将UINavigationBar添加到MVC并在其上放置按钮即可。然后向他们添加操作并执行选择#2。 您的代码无法正常工作,因为导航控制器没有父级,因为它没有显示为模态。
答案 1 :(得分:4)
一种情况是在调用showController的viewDidAppear之前调用解除{Modal} ViewControllerAnimated。在这种情况下,呈现的是动画== YES。在呈现完全出现之前,它被解雇了。
要解决此问题,您需要在解雇时检查,检查是否调用了viewDidAppear,如果没有,则在-viewDidAppear中推迟解雇。