backBarButtonItem 은 적용이 안된다??
>>>>>>>>>>>>>>>>>>>>>>>>>>>
위와 같이 만들고 싶다면.. 어떻게???
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
backBarButtonItem 쓰면 된다라고 하는데
backBarButtonItem 이 안먹힌다 라고 많이 한다
나도 그랬고.. 안되는게 아니라 쓰이는 방법이 다르다..
Main 에서 호출 한 Sub에서 돌아 올때
back 을 컨스텀 하게 바꾸기 위해서는
Sub 에
- (void)viewDidLoad {
[super viewDidLoad];
UIBarButtonItem *left = [[UIBarButtonItem alloc]
initWithTitle:@"my Back"
style:UIBarButtonItemStyleBordered
target:self // event 처리할 객체
action:@selector(goBackAdd:)]; // 호출할 메서드
self.navigationItem.leftBarButtonItem = left;
}
이렇게 나온다
근데 사각형이네
하지만 오각형은 안되나?
self.navigationItem.backBarButtonItem = left;
이렇게 소스를 바꿔 보았다
구글이나 맥부기에서는 되는 사람도 있고 안된다는 사람도 있고
난 안됐다
결과는 일반 백 버튼이 되거나 버튼이 없어 지는 현상이 일어났다
결론은 backBarButtonItem 은
Sub에서 만드는게 아니라
호출 대상인
Main 에서 만드는 것이다
< Source >
@implementation SubViewController
- (IBAction) goBackAdd : (id) sender{
[self.navigationController popViewControllerAnimated:YES];
}
- (void)viewDidLoad {
[super viewDidLoad];
UIBarButtonItem *left = [[UIBarButtonItem alloc]
initWithTitle:@"my Back"
style:UIBarButtonItemStyleBordered
target:self // event 처리할 객체
action:@selector(goBackAdd:)]; // 호출할 메서드
self.navigationItem.leftBarButtonItem = left;
}
@implementation RootViewController
- (IBAction) goBackAdd : (id) sender{
[self.navigationController popViewControllerAnimated:YES];
}
- (void)viewDidLoad {
[super viewDidLoad];
UIBarButtonItem *left = [[UIBarButtonItem alloc]
initWithTitle:@"my Back"
style:UIBarButtonItemStyleBordered
target:self // event 처리할 객체
action:@selector(goBackAdd:)]; // 호출할 메서드
self.navigationItem.backBarButtonItem = left;
}
소스에서 처럼
Sub의 백 버튼은 Main에서 self.navigationItem.backBarButtonItem 으로 생성 가능하다.
성공..