替换返回按钮的文字
很多app的要求所有的返回按钮的title都是“返回”,如果上一层题目文字太多,下一层的返回按钮文字就会显示不完全,而且这样可以使软件显得整洁。
方法一:
最普通的想法,A界面的navigationItem.backBarButtonItem修改的是B(A的下一级)界面的返回按钮,所以可以写一个BaseViewController
,让所有的UIViewController
继承它,像这样
1
|
- (void)viewDidLoad {
|
方法二:
思路是:在开启程序时,使用Method Swizzling
,将系统自带的backBarButtonItem
方法替换成我们自定义的方法。
具体实现就是创建个 UINavigationItem + BackItem
的类别,当系统执行+load
方法时,将backBarButtonItem
方法和myCustomBackButton
方法交换,利用iOS关联方法(objc_getAssociatedObject,objc_setAssociatedObject)
在static
区创建个backItemButton
用来展示。这个方法的好处就是将类别导入到工程里不用任何代码就可以实现,上代码吧:
1
|
+(void)load{
|
返回按钮只显示自定义图片
方法一:
最开始我的方案是实现UINavigationController
的代理判断是否是栈底,如果不是就修改leftBarButtonItem
的样式。
1
|
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
|
但iOS7.0
出了之后,这并不是一个好的解决方案。因为iOS7.0
之后如果把backItemButton
替换成leftItemButon
,interactivePopGestureRecognizer
手势就没有了。虽然可以使用
1
|
self.navigationController.interactivePopGestureRecognizer.delegate = (id<UIGestureRecognizerDelegate>)self;
|
将手势再加上,但实在是有些麻烦。。可是很多大公司用的都是这个方法。
方法二:
这个方法和上边‘替换返回按钮的文字’方法二大致一样,这句话要替换:
1
|
item = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back"] style:UIBarButtonItemStylePlain target:nil action:nil];
|
这句话要加上,用来去除系统自带的返回按钮上的尖脚号。
1
|
[[UINavigationBar appearance] setBackIndicatorImage:[[UIImage alloc]init]];
|
另外.....
我的愿望是.......
世界和平.........