Push 到指定的页面和拦截跳转并且一次性设置导航栏的item的文字的颜色

-(void)pushNextVCByInstance:(UIViewController *) nextVC{

    

    nextVC.hidesBottomBarWhenPushed =YES;

    UIBarButtonItem *item = [[UIBarButtonItemalloc]initWithTitle:@"返回"style:UIBarButtonItemStylePlaintarget:nilaction:nil];

    self.navigationItem.backBarButtonItem = item;

    [self.navigationControllerpushViewController:nextVCanimated:NO];

}

// 设置整个项目所有item的主题样式

+ (void)initialize

{

   

  /** 设置 UINavigationBar 上边的文字和颜色的属性 */

   UINavigationBar * navcBar = [UINavigationBarappearance];

   // - 设置导航栏的标题的文字属性

    [navcBar setTitleTextAttributes:nil];



   /**设置整个项目所有item的主题样式 */

    UIBarButtonItem *item = [UIBarButtonItemappearance];

    

    // 设置普通状态

    // keyNS****AttributeName

    NSMutableDictionary *textAttrs = [NSMutableDictionarydictionary];

    textAttrs[NSForegroundColorAttributeName] = [UIColororangeColor];

    textAttrs[NSFontAttributeName] = [UIFontsystemFontOfSize:15];

    [item setTitleTextAttributes:textAttrsforState:UIControlStateNormal];

    

    // 设置不可用状态

    NSMutableDictionary *disableTextAttrs = [NSMutableDictionarydictionary];

    disableTextAttrs[NSForegroundColorAttributeName] = [UIColorcolorWithRed:0.6green:0.6blue:0.6alpha:0.7];

    disableTextAttrs[NSFontAttributeName] = textAttrs[NSFontAttributeName];

    [item setTitleTextAttributes:disableTextAttrsforState:UIControlStateDisabled];

}

/**

 *  重写这个方法目的:能够拦截所有push进来的控制器

 *

 *  @param viewController即将push进来的控制器

 */

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated

{

    if (self.viewControllers.count > 0) { // 这时push进来的控制器viewController,不是第一个子控制器(不是根控制器)

        /* 自动显示和隐藏tabbar */

        viewController.hidesBottomBarWhenPushed =YES;

        

        /* 设置导航栏上面的内容 */

        // 设置左边的返回按钮

        viewController.navigationItem.leftBarButtonItem = [UIBarButtonItemitemWithTarget:selfaction:@selector(back)image:@"navigationbar_back"highImage:@"navigationbar_back_highlighted"];

        

        // 设置右边的更多按钮

        viewController.navigationItem.rightBarButtonItem = [UIBarButtonItemitemWithTarget:selfaction:@selector(more)image:@"navigationbar_more"highImage:@"navigationbar_more_highlighted"];

    }


// 后写下边这句话的目的是希望当在控制器中对导航栏的按钮进行修改时候可以有效 否则如果写在前边,就会出现的问题是在控制器里边在设置的导航栏的按钮设置无效....

    [super pushViewController:viewControlleranimated:animated];

}


- (void)back

{

#warning 这里要用self,不是self.navigationController

    // 因为self本来就是一个导航控制器,self.navigationController这里是nil

    [selfpopViewControllerAnimated:YES];

}


- (void)more

{

    [selfpopToRootViewControllerAnimated:YES];

}



// 设置右边的按钮不可用状态

self.navigationItem.rightBarButtonItem.enabled =NO;


//修改特殊页面的导航栏按钮.....

- (void)viewDidLoad

{

    [superviewDidLoad];

    

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItemalloc]initWithTitle:@"设置"style:0target:selfaction:@selector(setting)];

    // - 设置导航栏的标题的文字属性

    [self.navigationController.navigationBar setTitleTextAttributes:nil];

}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值