본문 바로가기
프로그래밍/iOS

backBarButtonItem 은 적용이 안된다??

by 백룡화검 2011. 7. 29.


>>>>>>>>>>>>>>>>>>>>>>>>>>>



위와 같이 만들고 싶다면.. 어떻게???


>>>>>>>>>>>>>>>>>>>>>>>>>>>>


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 으로 생성 가능하다.




성공..