方法一
通过工厂方法,然后在需要左上角显示图标的ViewController的viewDidLoad方法调用。代码如下:
Factory.h文件
#import <Foundation/Foundation.h>
@interface Factory : NSObject
+ (void)addBackButton:(UIViewController *)viewController;
@end
#import "Factory.h"
@implementation Factory
+ (void)addBackButton:(UIViewController *)viewController{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:[UIImage imageNamed:@"community_highlight"] forState:UIControlStateNormal];
    [button setImage:[UIImage imageNamed:@"community_highlight"] forState:UIControlStateHighlighted];
    CGRect frame = button.frame;
    frame.size = button.currentImage.size;
    button.frame = frame;
    UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc]initWithCustomView:button];
    UIBarButtonItem *speaceItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    speaceItem.width = -5;
    viewController.navigationItem.leftBarButtonItems = @[speaceItem,buttonItem];
}
@end
| 12
 3
 4
 
 | ### 方法二这种方法是通过实现UINavigationController的pushViewController方法,拦截所有push进来的viewController,然后对其进行设置。代码如下:
 
 ==BaseNavigationController.h文件==
 
 | 
| 1
 | ==BaseNavigationController.m文件==
 |