美文网首页iOS
iOS处理跳转

iOS处理跳转

作者: KamyShi | 来源:发表于2015-12-23 16:50 被阅读1448次

    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

    相关文章

      网友评论

        本文标题:iOS处理跳转

        本文链接:https://www.haomeiwen.com/subject/ufjvhttx.html