注册 登录
主题 : 怎么控制导航栏的页面跳转
级别: 新手上路
状态: 连续签到 - [3天]
UID: 630475
精华: 0
发帖: 39
可可豆: 166 CB
威望: 163 点
在线时间: 92(时)
注册时间: 2017-12-14
最后登录: 2018-08-17
0 楼:  发表于: 2018-02-07 15:00    发自: Web Page
来源于 一般提问 分类

怎么控制导航栏的页面跳转   

当我点击导航栏跳转时,先判断是不是要跳转到ShareViewController,如果是,则不跳转,如果不是则继续跳转,这个功能怎么实现啊?

/**
 *  初始化所有的子控制器
 */
- (void)setupAllChildViewControllers
{
    // 1.首页
    HomeViewController *home = [[HomeViewController alloc] init];
    [self setupChildViewController:home title:nil imageName:@"2_11" selectedImageName:@"2_12"];
    
    // 2.闹钟页
    TimerViewController *health = [[TimerViewController alloc] init];
    [self setupChildViewController:health title:nil imageName:@"2_13" selectedImageName:@"2_14"];
    
    
    for (UIView *child in health.tabBarController.tabBar.subviews) {
        if ([child isKindOfClass:NSClassFromString(@"UITabBarButton")]) {
            for (UIView *imageView in child.subviews) {
                if ([imageView isKindOfClass:NSClassFromString(@"UITabBarSwappableImageView")]) {
                    [imageView removeFromSuperview];
                    NSLog(@"移除多余视图333");
                }
            }
            [child removeFromSuperview];
        }
    }

    
    // 3.设置页
    SetViewController *protection = [[SetViewController alloc] init];
    [self setupChildViewController:protection title:nil imageName:@"2_15" selectedImageName:@"2_16"];
    
    //4.分享
    ShareViewController *share = [[ShareViewController alloc] init];
    [self setupChildViewController:share title:nil imageName:@"2_15" selectedImageName:@"2_16"];
}

// 是否允许选中控制器viewController
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
    if ([ShareViewController isMemberOfClass:[ShareViewController class]]) {
        
        return false;
    }
    return YES;
}

/**
 *  初始化一个子控制器
 *
 *  @param childVc           需要初始化的子控制器
 *  @param title             标题
 *  @param imageName         图标
 *  @param selectedImageName 选中的图标
 */
- (void)setupChildViewController:(UIViewController *)childVc title:(NSString *)title imageName:(NSString *)imageName selectedImageName:(NSString *)selectedImageName
{
    // 1.设置控制器的属性
    //childVc.title = title;
    childVc.navigationItem.title = title;
    // 设置图标
    childVc.tabBarItem.image = [UIImage imageNamed:imageName];
    // 设置选中的图标
    UIImage *selectedImage = [UIImage imageNamed:selectedImageName];
    if (iOS7) {
        childVc.tabBarItem.selectedImage = [selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    } else {
        childVc.tabBarItem.selectedImage = selectedImage;
    }
    
    // 2.包装一个导航控制器
    XWNavigationController *nav = [[XWNavigationController alloc] initWithRootViewController:childVc];
   
    [self addChildViewController:nav];
    
    // 3.添加tabbar内部的按钮
    [self.customTabBar addTabBarButtonWithItem:childVc.tabBarItem];

//    for (UIView *imageView in childVc.tabBarItem.tabBarButton.subviews) {
//        if ([imageView isKindOfClass:NSClassFromString(@"UITabBarSwappableImageView")]) {
//            // 需要实现的帧动画,这里根据需求自定义
//            CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"];
//            animation.values = @[@1.0,@1.3,@0.9,@1.15,@0.95,@1.02,@1.0];
//            animation.duration = 1;
//            animation.calculationMode = kCAAnimationCubic;
//            // 把动画添加到对应控件的layer上去就OK了
//            [imageView.layer addAnimation:animation forKey:nil];
//        }
//    }
}



关键词: app View image 导航栏
级别: 骑士
状态: 连续签到 - [79天]
UID: 574329
精华: 0
发帖: 391
可可豆: 913 CB
威望: 784 点
在线时间: 810(时)
注册时间: 2016-07-21
最后登录: 2018-08-16
1 楼:  发表于: 2018-02-07 15:03    发自: Web Page
导航栏跳转你不知道你点击的是什么按钮么 有点不理解意思
级别: 新手上路
状态: 连续签到 - [3天]
UID: 630475
精华: 0
发帖: 39
可可豆: 166 CB
威望: 163 点
在线时间: 92(时)
注册时间: 2017-12-14
最后登录: 2018-08-17
2 楼:  发表于: 2018-02-07 15:11    发自: Web Page
回 1楼(马阿剑) 的帖子
导航栏上有四个页面按钮,点击分享页面按钮的时候,不跳转到分享页面,执行其他操作
级别: 骑士
状态: 连续签到 - [79天]
UID: 574329
精华: 0
发帖: 391
可可豆: 913 CB
威望: 784 点
在线时间: 810(时)
注册时间: 2016-07-21
最后登录: 2018-08-16
3 楼:  发表于: 2018-02-07 15:33    发自: Web Page
正常情况下每个导航栏按钮的功能是一定的 你的这个导航栏上的分享按钮点击有几个事件
级别: 骑士
状态: 连续签到 - [3天]
UID: 516487
精华: 0
发帖: 399
可可豆: 918 CB
威望: 913 点
在线时间: 1126(时)
注册时间: 2015-10-22
最后登录: 2018-08-11
4 楼:  发表于: 2018-02-07 15:33    发自: Web Page
顶部的导航栏? 判断下class就行了。
级别: 新手上路
状态: 连续签到 - [3天]
UID: 630475
精华: 0
发帖: 39
可可豆: 166 CB
威望: 163 点
在线时间: 92(时)
注册时间: 2017-12-14
最后登录: 2018-08-17
5 楼:  发表于: 2018-02-07 15:38    发自: Web Page
回 3楼(马阿剑) 的帖子
只有一个事件,我想在点击分享之后不跳转到分享页面的视图控制器
级别: 骑士
状态: 连续签到 - [3天]
UID: 516487
精华: 0
发帖: 399
可可豆: 918 CB
威望: 913 点
在线时间: 1126(时)
注册时间: 2015-10-22
最后登录: 2018-08-11
6 楼:  发表于: 2018-02-07 15:39    发自: Web Page
创建一个NSObjec类,然后再<UITabBarControllerDelegate>,然后实现- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController方法,然后在自定义的UITabBarController类里面把实现UITabBarControllerDelegate方法的类声明为全局变量,然后在自定义UITabBarController类的viewDidLoad中初始化声明的全局变量NSObjec类,最后self.delegate=NSObjec对象。
级别: 骑士
状态: 连续签到 - [3天]
UID: 516487
精华: 0
发帖: 399
可可豆: 918 CB
威望: 913 点
在线时间: 1126(时)
注册时间: 2015-10-22
最后登录: 2018-08-11
7 楼:  发表于: 2018-02-07 15:40    发自: Web Page
root控制器要用自定义的UITabBarController
级别: 新手上路
状态: 连续签到 - [3天]
UID: 630475
精华: 0
发帖: 39
可可豆: 166 CB
威望: 163 点
在线时间: 92(时)
注册时间: 2017-12-14
最后登录: 2018-08-17
8 楼:  发表于: 2018-02-07 15:40    发自: Web Page
回 4楼(明夕何夕) 的帖子
这是自定义的导航栏,我用了- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 来进行判断,可是点击之后还是会跳转到分享页面
级别: 骑士
状态: 连续签到 - [3天]
UID: 516487
精华: 0
发帖: 399
可可豆: 918 CB
威望: 913 点
在线时间: 1126(时)
注册时间: 2015-10-22
最后登录: 2018-08-11
9 楼:  发表于: 2018-02-07 15:41    发自: Web Page
这是我的shouldSelectViewController方法的实现,你可以参考下
图片:QQ20180207-154040.png
描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部