这个功能很常用吧。为什么网上资料那么少呢~
最后我的解决方案:
实现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。
有没有更好的解决方案呢?