统一修改UINavigationController的返回按钮

来源:互联网 发布:拍照的姿势软件 编辑:程序博客网 时间:2024/05/16 12:18

这个功能很常用吧。为什么网上资料那么少呢~

最后我的解决方案:

实现UINavigationController的代理判断是否是栈底,如果不是就修改leftBarButtonItem的样式。

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{    UIViewController *root = navigationController.viewControllers[0];        if (root != viewController) {        UIBarButtonItem *itemleft = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"backBtn"] style:UIBarButtonItemStylePlain target:self action:@selector(popAction:)];        viewController.navigationItem.leftBarButtonItem = itemleft;    }}- (void)popAction:(UIBarButtonItem *)barButtonItem{    [self.navigationController popViewControllerAnimated:YES];}

我尝试的方法:

1.UIBarButtonItem *barItem = [UIBarButtonItem appearance];

[barItem setBackButtonBackgroundImage:[UIImage imageNamed:@"backBtn"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

不行,只能修改背景。还是拉伸的。

2.navBar.backItem  backItem只读。。

3.navigationController.navigationItem.backBarButtonItem  没试成功,而且它只能修改下一级的backBarButtonItem。


有没有更好的解决方案呢?

0 0
原创粉丝点击