//1,继承UINavigationController
#import <UIKit/UIKit.h>
@interface BaseNavigationController : UINavigationController
@end
#import "BaseNavigationController.h"
#import "UIBarButtonItem+XQ.h"
#import "MainViewController.h"
@interface BaseNavigationController ()
@end
@implementation BaseNavigationController
+ (void)initialize
{
UINavigationBar *bar = [UINavigationBar appearance];
[bar setBackgroundImage:[UIImage imageNamed:@"greenColor.png"] forBarMetrics:UIBarMetricsDefault];
//背景色
// [bar setBarTintColor:[UIColor yellowColor]];
// 设置导航栏标题文字
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[NSFontAttributeName] = [UIFont systemFontOfSize:20.0];
dict[NSForegroundColorAttributeName] = [UIColor whiteColor];
// dict[NSBackgroundColorAttributeName] = [UIColor redColor];
[bar setTitleTextAttributes:dict];
// 导航栏Item
UIBarButtonItem *item = [UIBarButtonItem appearance];
NSMutableDictionary *itemDict = [NSMutableDictionary dictionary];
itemDict[NSFontAttributeName] = [UIFont systemFontOfSize:16.0];
itemDict[NSForegroundColorAttributeName] = [UIColor redColor];
// itemDict[NSBackgroundColorAttributeName] = [UIColor cyanColor];
[item setTitleTextAttributes:itemDict forState:UIControlStateNormal];
}
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if ([viewController class] != [MainViewController class]) {
//UIBarButtonItem+XQ.h 类中自定义了 UIBarButtonItem 的初始化方法
viewController.navigationItem.leftBarButtonItem = [UIBarButtonItem barButtonItemWithImage:@"backBarButtonItemImage" highImage:nil size:CGSizeMake(12, 21) target:viewController action:@selector(backBtnClick:)];
}
[super pushViewController:viewController animated:animated];
}
/**
* 避免报警告
*
* @param sender
*/
-(void)backBtnClick:(id)sender{
}
@end
//2,继承UIViewController
#import <UIKit/UIKit.h>
@interface BaseViewController : UIViewController
//点击返回的方法,子类继承,在子类中写需要添加的内容
-(void)backBtnClick:(id)sender;//暴露外部方法,以便子类继承
@end
#import "BaseViewController.h"
@interface BaseViewController ()
@end
@implementation BaseViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
}
/**
* 子类复写实现需要的功能
*
* @param sender
*/
-(void)backBtnClick:(id)sender{
NSLog(@"父类中点击了返回按钮");
[self.navigationController popViewControllerAnimated:YES];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}