1

所以我有一个tabBarController作为模态视图,它显示正常。当我点击一些标签时,视图正确加载。我想驳回modalView当我点击tabBarController.selectedIndex ==4关闭ModalView在这里不起作用

所以我写在viewDidLoad,也试图在视图控制器dismissModalViewControllerviewWillAppear和它不工作。

我试图

[self.parentViewController dismissModalViewControllerAnimated:YES]; 

     // ... And also // 

[self dismissModalViewControllerAnimated:YES]; 

有人能指出为什么它不工作?

+0

难道您将tabBarController作为模式视图控制器或您尝试的视图控制器呈现解雇它? – MishieMoo

+0

我将tabBarController作为modalViewController提供,我想在其中一个选项卡中将其解除。 – Legolas

回答

1

所有你需要做的就是传递一个引用VC上的模态表示的VC,它将以模态方式呈现它。

在UITabBarController子类中定义一个弱引用作为属性,并在需要时发送消息以解除它。

例如使用属性命名mainViewController

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

然后在MySubclass定义

@property(assign) UIViewController *mainViewController; 

和合成它,那么当你想要的标签被选中:

[self.mainViewController dismissModalViewControllerAnimated:YES]; 
+0

这不起作用。Nevermind。我用NSNotifications解雇了它.. FML!+1无论如何。 – Legolas

+0

@Legolas - 我几乎每天都这样做;)认为你在实施这个解决方案时错过了一些东西 – 2011-07-25 18:22:05

+0

这是什么意思? 'tbController.mainViewController = self;'? – Legolas

-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]; 

让我知道如果您需要更多的帮助或任何问题。

+0

'如果您将UINavigationController作为父控制器,那么以下行将适用于您。 [self dismissModalViewControllerAnimated:YES];'......就是这样! ? – Legolas

1

我认为(标签栏控制器)第四届视图控制器正在试图获得由线

[self.parentViewController dismissModalViewControllerAnimated:YES]; 

驳回由于这4视图控制器不被任何控制器,这不会工作呈现。

而且它贬的模态视图控制器通过线

[self dismissModalViewControllerAnimated:YES]; 

因为,这4视图控制器并没有提出任何视图控制器,这又应该不行。

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

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

我猜这个没有真正尝试。让我知道这个是否奏效。

+0

好吧..这不起作用:( – Legolas

+0

我用Notifications解雇了它。+1无论如何你的帮助。 – Legolas