在UTabBarViewController+Navigation框架下,经常会遇到从一个子视图跳转到另一个子视图(当然这里指的是UITabBar中的Item1的子视图跳转到Item3的子视图)。典型的例子就是消息推送了(当前正在浏览某一个界面,收到消息后自动跳转到消息展示界面)。
首先说框架是如下图:
当然想从ViewController9下的moreController视图跳转到ViewContorller7视图中。
那流程应该如下图:
上图描述很清楚,无需多说。代码就如下:
//相当于从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派生类中实现;
转自---http://blog.csdn.net/nogodoss/article/details/27307753