programing

iPhone의 내비게이션 바에서 '뒤로' 버튼을 숨기는 방법

elseif 2023. 4. 14. 21:17

iPhone의 내비게이션 바에서 '뒤로' 버튼을 숨기는 방법

네비게이션 컨트롤을 추가하여 앱에서 보기 사이를 전환했습니다.그러나 일부 보기에는 '뒤로'(이전 제목) 버튼이 없어야 합니다.뒤로 버튼을 숨기는 방법은 없나요?

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

신속:
navigationItem.hidesBackButton = true

가장 좋은 방법은 수동으로 설정해도 뒤로 버튼을 숨길 수 있도록 이들을 조합하는 것입니다.

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

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

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

또는

[self.navigationItem setHidesBackButton:YES];

또, 커스텀이 있는 경우UINavigationBar그러면 Bellow code를 사용해 보세요.

self.navigationItem.leftBarButtonItem = nil;

Swift의 경우:

컨트롤러에 추가

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

코드 사용:

 self.navigationItem.backBarButtonItem=nil;

UIViewController의 함수 viewDidLoad에서는 다음 코드를 사용합니다.

self.navigationItem.hidesBackButton = YES;

네비게이션 컨트롤러가 있는 오브젝트에서 호출해야 한다는 것을 잊지 마세요.예를 들어, RootViewController를 사용하여 탭바 컨트롤러를 푸시하는 네비게이션컨트롤러가 있는 경우,self.navigationItem.hidesBackButton = YESRootViewController는 아무것도 하지 않습니다.전화해야 할 것 같아요self.tabBarController.navigationItem.hidesBackButton = YES

뷰 컨트롤러에 이 코드 추가

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

슬라이드 투 백 제스처가 있다는 것을 잊지 마세요.이것도 삭제하는 것이 좋을 것 같습니다.필요한 경우 다시 활성화하는 것을 잊지 마십시오.

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

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

저는 위의 어느 것도 효과가 없는 것 같았고 시각적인 효과도 없었습니다.내비게이션 컨트롤러에 내장된 뷰가 있는 스토리보드를 사용하고 있습니다.

그런 다음 코드 레벨에서 menuItems를 추가하면 뷰 계층을 시각적으로 디버깅할 때 "backButton"이 표시되며 menuItem 아이콘이 보이지 않는 "back button" 아래에 표시됩니다.

여러 가지 후크 방식으로 세팅을 해봤지만 효과가 없었습니다.그리고 나서 나는 좀 더 잔혹한 접근을 시도했고 하위 뷰를 반복했지만 역시 효과가 없었다.

아이콘 사이즈를 확인했더니 괜찮은 것 같아요.애플 휴먼 인터페이스 가이드라인을 참조한 후 제 아이콘이 맞다는 것을 확인하였습니다. (내 경우 24px48px72px는 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];

모든 경우에 효과가 있었던 것은 아닙니다.

self.navigationItem을 클릭합니다.hidesBackButton = YES;

viewController 초기화 시 설정했을 때 완벽하게 동작했습니다.

먹어봐 - 이거 먹어봐 -self.navigationController?.navigationItem.hidesBackButton = true

c# 또는 Xamarin.ios 의 경우는, 다음과 같습니다.Navigation Item(네비게이션 항목)HiddesBackButton = 참;

navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true

didLoad 또는 loadView에서 이 코드 블록을 사용하는 경우 동작했지만 완벽하게 동작하지는 않았습니다.주의 깊게 보면 뷰 로드 시 뒤로 버튼이 숨겨져 있는 것을 알 수 있습니다.이상하게 생겼네.

완벽한 해결책은 무엇일까요?

componentView(Command + Shift + L)BarButtonItem 구성 요소를 대상 뷰컨트롤러 네비게이션 바에 추가합니다.

오른쪽 패널에서 BarButtonItem set Title = "을 선택합니다.

여기에 이미지 설명 입력

self.navigationItem.setHidesBackButton(true, animated: true)

언급URL : https://stackoverflow.com/questions/614212/how-to-hide-back-button-on-navigation-bar-on-iphone