兩種方法可以設置整個項目的BackBarButtonItem(LeftBarButtonItem)。
方法一:項目里所有的類繼承一個基類,可以叫BaseViewController,統一在這個基類里設置UIBarButtonItem的屬性。但是這樣耦合度太高。
1 [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault];
方法二:在繼承的NavigationController里重新push方法,給LeftBarButtonItem設置一個圖片(讓UI做)
1 /** 2 * 能攔截所有push進來的子控制器 3 */ 4 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated 5 { 6 if (self.viewControllers.count > 0) { // 如果現在push的不是棧底控制器(最先push進來的那個控制器) 7 viewController.hidesBottomBarWhenPushed = YES; 8 9 // 設置導航欄按鈕 10 viewController.navigationItem.leftBarButtonItem = [UIBarButtonItem itemWithImageName:@"navigationbar_back" highImageName:@"navigationbar_back_highlighted" target:self action:@selector(back)]; 11 } 12 [super pushViewController:viewController animated:animated]; 13 }
