关闭ModalView在这里不起作用

时间:2011-07-25 17:38:30

标签: iphone objective-c cocoa-touch uitabbarcontroller modalviewcontroller

所以我有一个tabBarController作为模态视图,它显示正常。当我单击某些选项卡时,视图正在正确加载。我想点击tabBarController.selectedIndex ==4

时忽略modalView

所以我写了viewDidLoad,并在该视图控制器的viewWillAppear中尝试dismissModalViewController,但它不起作用。

我试过

[self.parentViewController dismissModalViewControllerAnimated:YES];

      // ... And also //

[self dismissModalViewControllerAnimated:YES];

有人可以指出为什么它不起作用吗?

3 个答案:

答案 0 :(得分:1)

我认为第四个视图控制器(标签栏控制器)试图被线路解雇

[self.parentViewController dismissModalViewControllerAnimated:YES];

由于第4个视图控制器没有被任何控制器显示,因此无法工作。

它正在通过线

解雇它的模态视图控制器
[self dismissModalViewControllerAnimated:YES];

因为,这个第4个视图控制器没有显示任何视图控制器,所以这不应该工作。

您想要关闭标签栏控制器而不是第4个视图控制器。

基本上,您可以从第4个视图控制器获取标签栏控制器的参考。 至,[yourFourthViewController.tabBarController.parentViewController dismissModalViewControllerAnimated:YES];

我猜这个没有真正尝试。如果有效,请告诉我。

答案 1 :(得分:1)

你所要做的就是传递一个对模态显示的VC的引用,该VC指向VC,它将以模态方式呈现。

将弱引用定义为UITabBarController子类中的属性,并在需要时发送消息以将其解除。

例如,使用名为mainViewController的属性:

MySubclass *tbController = [[MySubclass ....];
tbController.mainViewController = self;
[self presentModalViewController:tbController animated:YES];

然后在MySubclass中定义

@property(assign) UIViewController *mainViewController;

并合成它,然后当你想要的标签被选中时:

[self.mainViewController dismissModalViewControllerAnimated:YES];

答案 2 :(得分:-1)

如果您将UINavigationController作为父控制器,那么以下行将适合您。

[self dismissModalViewControllerAnimated:YES];

但是在这里我认为你有UIViewController是父控制器而不是UINavigationController。所以,当presentModalViewController时你可以做一件事。

if(objView == nil)
    objView = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];

UINavigationController *navigationController1 = [[UINavigationController alloc] initWithRootViewController:objView];

[self presentModalViewController:navigationController1 animated:YES];

如果您需要更多帮助或任何问题,请与我们联系。