所以我有一个tabBarController作为模态视图,它显示正常。当我单击某些选项卡时,视图正在正确加载。我想点击tabBarController.selectedIndex ==4
所以我写了viewDidLoad
,并在该视图控制器的viewWillAppear
中尝试dismissModalViewController
,但它不起作用。
我试过
[self.parentViewController dismissModalViewControllerAnimated:YES];
// ... And also //
[self dismissModalViewControllerAnimated:YES];
有人可以指出为什么它不起作用吗?
答案 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];
如果您需要更多帮助或任何问题,请与我们联系。