Основываясь на коде Хорхе, это мое решение.
Я создаю простую категорию на UIViewController
:
UIViewController + ImageBackButton.h
#import <UIKit/UIKit.h>
@interface UIViewController (ImageBackButton)
- (void)setUpImageBackButton;
@end
UIViewController + ImageBackButton.m
#import "UIViewController+ImageBackButton.h"
@implementation UIViewController (ImageBackButton)
- (void)setUpImageBackButton
{
UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 34, 26)];
[backButton setBackgroundImage:[UIImage imageNamed:@"back_arrow.png"] forState:UIControlStateNormal];
UIBarButtonItem *barBackButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
[backButton addTarget:self action:@selector(popCurrentViewController) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = barBackButtonItem;
self.navigationItem.hidesBackButton = YES;
}
- (void)popCurrentViewController
{
[self.navigationController popViewControllerAnimated:YES];
}
@end
Теперь все, что вам нужно сделать, это #import UIViewController+ImageBackButton.h
либо во всех ваших контроллерах представления, либо в пользовательском базовом классе контроллера представления, от которого наследуются ваши другие контроллеры представления, и реализовать метод viewWillAppear:
:
- (void)viewWillAppear:(BOOL)animated
{
[self setUpImageBackButton];
}
Вот и все. Теперь у вас есть кнопка возврата изображения везде. Без границы. Наслаждайтесь!