iOS处理跳转
项目中有一些需要跳转界面,整理一下不同的跳转。
- 我的项目中有tabbar有4个选项,
- 每个界面进入基本都有网络请求
第一种——跳转到某一个tabbar的主页
/** 跳转到首页 */
- (void)goToHomeView
{
//index从 0 开始,我这里有4个tabbar,就是0,1,2,3
self.navigationController.tabBarController.selectedIndex = 0;
}
第二种——跳转到某个界面(之前打开过、未打开过)
注:我第一个控制器为A,点击打开了B界面(B是一个list),打开list某一个界面C之后,里面还需要跳转D界面,在D界面操作之后,需要跳转到B界面,如果我们pop的话就是到C界面了,这里就需要用到navigationController的栈操作,
//D界面的跳转返回B界面
- (void)popView {
if ([self.navigationController.viewControllers[0] isKindOfClass:[A class]])
{
B *dev = self.navigationController.viewControllers[1];
[self.navigationController popToViewController:dev animated:YES];
} else {
[self.navigationController popToRootViewControllerAnimated:NO];
[[NSNotificationCenter defaultCenter]postNotificationName:@"PUBFanhui" object:nil];
}
}
由于我的D界面还有别的入口,(栈顶可能不是A,所以做了下判断)用了通知的办法去进行跳转
(下面这部分代码是写在继承自UITabBarController的控制器里面,在这里设置这个通知的好处是你初始化tabbar的时候,就定义这个通知了,这部分属于一个整体。
如果不在这里,部分代码需要修改。)
如果你有好的办法,可以交流,谢谢
//在viewDidLoad里面添加通知
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(tiaozhuan) name:@"PUBFanhui" object:nil];
- (void)tiaozhuan
{
//我的A界面是处于最后一个tabbar的,这个控制器是继承UITabBarController,所以直接self.selectedIndex,
self.selectedIndex = 3;
MainNavigationController *nav =self.viewControllers[3];
[nav pushViewController:[[MyProgectTableViewController alloc] init] animated:NO];
}
最后说一下,上面第二种方法中,通知的那个跳转一般不推荐用,我们这边只是实现了一些简单跳转的,太深入的跳转都给产品推了,没有实现,朋友们如果有好的办法,可以给说一下。谢谢
转自:http://blog.csdn.net/sjl_leaf/article/details/50387637