首页 > 其他 > 详细

统一所有控制器导航栏左上角和右上角内容

时间:2015-12-06 15:54:25      阅读:114      评论:0      收藏:0      [点我收藏+]

1.让所有push进来的控制器,它是导航栏左上角和右上角的内容都一样

2.拦截所有push进来的控制器

3.思路:自定义导航控制器,重写push方法,就可以得到传进来的控制器参数

 

//  HWNavigationController.h
#import <UIKit/UIKit.h>

@interface HWNavigationController : UINavigationController

@end


#import "HWNavigationController.h"

@interface HWNavigationController ()

@end

@implementation HWNavigationController

/**
 *  重写这个方法目的:能够拦截所有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 = [UIBarButtonItem itemWithTarget:self action:@selector(back) image:@"navigationbar_back" highImage:@"navigationbar_back_highlighted"];
        
        // 设置右边的更多按钮
        viewController.navigationItem.rightBarButtonItem = [UIBarButtonItem itemWithTarget:self action:@selector(more) image:@"navigationbar_more" highImage:@"navigationbar_more_highlighted"];
    }

    [super pushViewController:viewController animated:animated];
}

- (void)back
{
#warning 这里要用self,不是self.navigationController
    // 因为self本来就是一个导航控制器,self.navigationController这里是nil的
    [self popViewControllerAnimated:YES];
}

- (void)more
{
   // 返回根控制器 [self popToRootViewControllerAnimated:YES]; }
@end

 

效果如图:

技术分享

 

技术分享

 

技术分享

统一所有控制器导航栏左上角和右上角内容

原文:http://www.cnblogs.com/521it/p/5023687.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!