iPhone의 탐색 모음에서 '뒤로'버튼을 숨기는 방법?


315

내 앱에서보기 간을 전환하기 위해 탐색 컨트롤을 추가했습니다. 그러나 일부보기에는 '뒤로'(이전 제목) 버튼이 없어야합니다. 뒤로 버튼을 숨기는 방법에 대한 아이디어가 있습니까?

답변:


811

목표 -C :
self.navigationItem.hidesBackButton = YES;

빠른:
navigationItem.hidesBackButton = true


@ user8170 탐색 모음에서 왼쪽 막대 버튼 항목을 숨기는 방법 ..?
rockey

9
뒤로 버튼을 숨길 수 없습니다 self.navigationItem.leftBarButtonItem = nil;. leftbarbuttonitem을 명시 적으로 설정 한 경우을 사용할 수 있습니다 self.navigationItem.leftBarButtonItem = nil;. self.navigationItem.hidesBackButton = YES;뒤로 단추 항목을 숨 깁니다
rakeshNS

1
iOS 7에서 self.navigationItem.leftBarButtonItem = nil; viewDidLoad, viewWillAppear 또는 viewDidAppear에서 발행 될 때 뒤로 단추에 영향을 미치지 않습니다. 이 코드 줄은 viewdidLoad 내에서 작동합니다. self.navigationItem.hidesBackButton = YES;
Alex Zavatone

2
이것이 도움이되는지 확실하지 않지만 'self'는 항상 내비게이션 컨트롤러 스택의 맨 위에 표시되는 뷰 컨트롤러입니다.
Kunal Balani

self.navigationItem.hidesBackButton = YES; viewDidLoad, ios 7에서 나를 위해
일함

38

가장 좋은 방법은 이들을 결합하는 것이므로 수동으로 설정하더라도 뒤로 버튼이 숨겨집니다.

self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;

6
user716216에게 답하기 위해 한 문장 설명으로 설명했습니다. 두 번째 코드 줄은 기본 사례에 적용됩니다. 버튼을 직접 만들고 추가 한 경우 첫 번째 코드 줄이 작동합니다.
Alex Zavatone

21

벨로우즈 코드가있는 뒤로 버튼 숨기기 ...

[self.navigationItem setHidesBackButton:YES animated:YES];

또는

[self.navigationItem setHidesBackButton:YES];

또한 사용자 정의가 있으면 UINavigationBar벨로우즈 코드를 사용해보십시오.

self.navigationItem.leftBarButtonItem = nil;

당신이 그 코드를 사용했을 때 어떤 클래스에서도 그 클래스의 네비게이션 바 뒤로 버튼은 숨길 것입니다 ...
Paras Joshi

6

에서 스위프트 :

이것을 컨트롤러에 추가하십시오

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.setHidesBackButton(true, animated: false)
}


3

UIViewController의 viewDidLoad 함수에서 다음 코드를 사용하십시오.

self.navigationItem.hidesBackButton = YES;

2

네비게이션 컨트롤러가있는 객체에서 호출해야한다는 것을 잊지 마십시오. 예를 들어, 내비게이션 컨트롤러가 RootViewController로 탭 바 컨트롤러를 밀고 있으면 RootViewController를 호출 self.navigationItem.hidesBackButton = YES해도 아무런 변화가 없습니다. 실제로 전화해야합니다self.tabBarController.navigationItem.hidesBackButton = YES


2

지금 슬라이드 투 백 제스처가 있다는 것을 잊지 마십시오. 아마도 이것을 제거하고 싶을 것입니다. 필요한 경우 다시 활성화하는 것을 잊지 마십시오.

if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
    self.navigationItem.hidesBackButton = YES;
}

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}

1

이 코드를 뷰 컨트롤러에 추가

UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;

1

나에게 위의 어느 것도 효과가없는 것처럼 보였지만 시각적 효과는 없었습니다. 네비게이션 컨트롤러에 "내장 된"뷰가있는 스토리 보드를 사용하고 있습니다.

그런 다음 코드 수준에서 menuItems를 추가하면 어떤 이유로 든보기 계층 구조를 시각적으로 디버깅 할 때 "backButton"이 표시되고 메뉴 항목 아이콘이 보이지 않는 "back button"아래에 표시됩니다.

다양한 후크 방법에서 제안한대로 설정을 시도했지만 아무런 효과가 없었습니다. 그런 다음 더 잔인한 접근 방식을 시도하고 효과가없는 하위 견해를 반복했습니다.

아이콘 크기를 검사 한 후 문제가없는 것으로 보입니다. 애플 휴먼 인터페이스 가이드 라인을 참조한 후 아이콘이 올바른지 확인했습니다. (필자의 경우 24px 48px 72px에서 1 픽셀 작음).

가장 이상한 부분은 실제 수정입니다 ...

BarButton 항목을 추가 할 때 적어도 하나의 문자로 제목을 지정하십시오 . 제 경우에는 공백 문자입니다.

이것이 누군가를 돕기를 바랍니다.

//left menu - the title must have a space
UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " <--THE FIX 
                                                                    style:UIBarButtonItemStylePlain
                                                                  target:self
                                                                  action:@selector(showMenu)];
leftButtonItem.image = [UIImage imageNamed:@"ic_menu"];

[self.navigationItem setLeftBarButtonItem:leftButtonItem];

1

내가 설정할 때 모든 경우에 나를 위해 작동하지 않았습니다

self.navigationItem.hidesBackButton = YES;

viewWillAppear 또는 ViewDidLoad에 있지만 viewController의 init에 설정하면 완벽하게 작동합니다.




0
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true

didLoad 또는 loadView 내부 에서이 코드 블록을 사용하면 완벽하게 작동하지는 않았지만 뷰를로드 할 때 뒤로 버튼이 숨겨져있는 것을 볼 수 있습니다.

완벽한 솔루션은 무엇입니까?

추가 BarButtonItem의 콘포에서 구성 요소를 (명령 + Shift + L) 대상 viewControllers 탐색 모음에.

오른쪽 패널에서 BarButtonItem set Title = ""선택

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.