从非第一个tabbarItem子页面直接返回首页,也就是第一个item页面

在UTabBarViewController+Navigation框架下,经常会遇到从一个子视图跳转到另一个子视图(当然这里指的是UITabBar中的Item1的子视图跳转到Item3的子视图)。典型的例子就是消息推送了(当前正在浏览某一个界面,收到消息后自动跳转到消息展示界面)。
首先说框架是如下图:


从非第一个tabbarItem子页面直接返回首页,也就是第一个item页面_第1张图片

当然想从ViewController9下的moreController视图跳转到ViewContorller7视图中。


从非第一个tabbarItem子页面直接返回首页,也就是第一个item页面_第2张图片

那流程应该如下图:


从非第一个tabbarItem子页面直接返回首页,也就是第一个item页面_第3张图片

上图描述很清楚,无需多说。代码就如下:

//相当于从moreController视图中一个一个地退出视图(Pop方式),直接退到UITabBarViewController的Item3中

UINavigationController *oldNavigationController = [self.viewControllers objectAtIndex:self.selectedIndex];
for (int i = [oldNavigationController.viewControllers count] - 1; i >= 0; i--) {
UIViewController *viewController = [oldRootNavigationController.viewControllers objectAtIndex:i];
NSArray *array = [oldRootNavigationController popToViewController:viewController animated:NO];
}
//当不是UITabBarViewController不是第1项时,就强制切换到Item1
if (0 != self.selectedIndex){
self.selectedIndex = 0;
}
//在Item1中查找并获取到ViewController7视图(由于ViewController7是在第1个,即为0)
UINavigationController *newNavigationController = [self.viewControllers objectAtIndex:0];
ViewController7 *viewcontroller7 = [newNavigationController.viewControllers objectAtIndex:0];

获取到viewContorller7对象,就可以做相关事情了。
注意上述代码需在UITabBarViewConroller派生类中实现;

从非第一个tabbarItem子页面直接返回首页,也就是第一个item页面_第4张图片

转自---http://blog.csdn.net/nogodoss/article/details/27307753

你可能感兴趣的:(从非第一个tabbarItem子页面直接返回首页,也就是第一个item页面)