0

저는 스택에 UITableViewController B를 푸시하는 UITableViewController A가 있습니다.iOS에서 뒤로 버튼을 누르는 데 문제가 발생했습니다.

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Trending" 
                        style:UIBarButtonItemStylePlain 
                        target:self 
                        action:@selector(backButtonClicked:)]; 

backButtonClicked :도에서 구현되는

제가

코드를 갖는다.

B는 제목 동향을 가지고,하지만 난 그것을 클릭하면, 그것은 지금까지 backButtonClicked에 도달하지 않은 : 왜이 ​​

입니까?

+0

당신은 uinavigation 컨트롤러를 사용하고 있습니까? – TommyG

+0

예 UINavigationController 내부에있는 UITableViewController를 사용하고 있습니다. –

답변

0

시도 중 하나를 위임 설정 :

[navigationController setDelegate:self]; 

또는 왼쪽 버튼을 사용하여.

viewControllerB.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Trending" style:UIBarButtonItemStylePlain target:self action:@selector(backButtonClicked:)]; 
+0

위임자가 아무 것도하지 않고 leftbarbuttonitem으로 변경하면 더 이상 제목이 변경되지 않고 선택기도 수행되지 않습니다. ( –

+0

B보기 컨트롤러 backBarButtonItem을 설정해보십시오. UIBarButtonItemStylePlain 대상 : 자체 액션 : @selector (backButtonClicked :)] – chown

0

시도 : 당신은 대신에 B의 버튼 항목을 설정하려고 할 수 있습니다, 또한

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Trending" style:UIBarButtonItemStylePlain target:self action:@selector(backButtonClicked:)]; 

: 때때로 뒤로 버튼은 특정 전망 작동하지 않고 내가 대신 왼쪽 버튼을 사용할 수 있었다 아니 backBarButtonItem하지만 leftBarButtonItem 대신

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Trending" style:UIBarButtonItemStylePlain target:self action:@selector(backButtonClicked:)]; 
self.navigationItem.hidesBackButton=YES; 

나를 위해 그것은 매력처럼 작동합니다. 그리고이 버튼을 놓지 않았다는 것을 잊지 마십시오. 그러면 메모리 누수가 발생할 수 있습니다. 그래서 당신은 Xcode의 문서에서이

UIBarButtonItem *myBackButton = [[UIBarButtonItem alloc] initWithTitle:@"Trending" style:UIBarButtonItemStylePlain target:self action:@selector(backButtonClicked:)]; 
self.navigationItem.leftBarButtonItem = myBackButton; 
[myBackButton release]; 
self.navigationItem.hidesBackButton=YES; 
1

처럼 당신이 버튼을 할당 할 때 오토 릴리즈를 추가하거나 할 수 있습니다, 그것은 backBarButtonItem 대상 및 조치가 전무로 설정해야한다고 주장한다. 그래서 당신이 그것을 설정하더라도 그것은 무시 될 것입니다. 아래 버튼을 클릭하면 맞춤 동작을 추가 할 수 있습니다.

Custom Action on Back Button Item

아니면 viewControllerB에서 다음과 같이 단지 수 :

self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Trending" 
                      style:UIBarButtonItemStylePlain 
                      target:self 
                      action:@selector(backButtonClicked:)] autorelease]; 

다음 또한 viewControllerB

이 추가
- (void)backButtonClicked:(id)sender { 

    [[[self.navigationController viewControllers] objectAtIndex:0] backButtonClicked:sender]; 

    [self.navigationController popViewControllerAnimated:YES]; 

} 

위의 방법은 RootViewController를 발견하고 그것을 보내드립니다 backButtonClicked 메시지. 그러면 현재 뷰 컨트롤러가 팝업되어 backBarButtonItem을 에뮬레이트 할 수 있습니다. 또한 objectAttIndex 메소드의 값을 변경하여 메시지를 보낼보기 컨트롤러를 변경할 수 있습니다.

관련 문제