탐색 모음이없는 UINavigationController?


117

범용 앱이 있고 iPad 버전 UISplitViewController에서 메일 앱과 유사한 인터페이스를 만드는 데 사용 하고 있습니다.

새 Detail 뷰를 푸시하는 데 문제가있어서 UINavigationController필요에 따라 뷰를 푸시하고 팝할 수 있도록 a를 사용하기로 결정했습니다 . 하지만 내비게이션보기 나 도구 모음을 사용하고 싶지 않습니다. 하지만 내가 무엇을하든 내비게이션 바를 숨길 수 없습니다.

IB에서 "Shows Navigation Bar"의 선택을 취소하고 설정도 시도했습니다.

[self.navigationController setNavigationBarHidden:YES];

에서 viewDidLoad/ viewDidAppear/ viewWillAppear. 나는 또한 푸시 될 각 뷰에서 그것을 시도했습니다. 아무것도 작동하지 않습니다.

내가 여기에 빠진 것이 있습니까? UINavigationController툴바 나 내비게이션 바없이 를 가질 수 있습니까?


self인스턴스 가 속한 클래스의 수퍼 클래스는 무엇입니까 ?

답변:


192

다음을 수행 할 수 있어야합니다.

self.navigationController.navigationBar.isHidden = true //Swift 5

self.navigationController는 (분명히) UINavigationController의 인스턴스입니다. 나를 위해 일하는 것 같지만 이것을 게시하기 전에 간단히 테스트했습니다.


2
따라서 귀하의 경우 self.navigationController.navigationBar.hidden = YES;
Ashwin 2011

4
해냈어! 코드를 통해 수행하는 대신 IB의 Nagivation 도구 모음에 대한 숨김 상자를 간단히 선택할 수 있다고 덧붙일 것입니다. 감사!
DOOManiac 2011

1
네, 죄송합니다. 나는 당신이 IB를 사용하고 있다는 사실을 파악하고 코드를 사용하는 대신 Hidden box를 언급해야했습니다. 저는 최근에 .xib 파일없이 완전히 프로그래밍 방식으로 모든 인터페이스를 만드는 작업에 착수했습니다.
Ashwin 2011

5
나는 이것을 내 뷰 컨트롤러의 viewwillapear라고 부르고 - (void)viewWillAppear:(BOOL)animated { self.navigationController.navigationBar.hidden = YES; } 작동합니다
Ali

2
네비게이션 바는 숨겨하지만 내보기 컨트롤러 화면이 전체 화면으로 확장하지 않습니다
ArdenDev

40

내비게이션 바를 원하지 않고 내비게이션 바가 일반적으로있는 위치까지 콘텐츠를 조정하려면 다음을 사용해야합니다.

self.navigationController.navigationBarHidden = YES;

이것은 다음과 같은 결과를 제공합니다.

여기에 이미지 설명 입력

반면 self.navigationController.navigationBar.hidden = YES;navigationBar가 있어야 할 공간을 제공합니다. 이렇게 :

여기에 이미지 설명 입력


iOS 6과의 결과 차이에 대한 매우 좋은 차이. IOS 7에서는 공간이 제거 된 것처럼 보이지만 더 많은 사람들이 그 사실을 확인할 때까지 기다릴 것입니다.
Alex Zavatone 2014-08-11

39

Xcode 4.3.2에서 :

  1. 스토리 보드에서 내비게이션 컨트롤러 선택
  2. (오른쪽) 유틸리티 패널에서 Attributes Inspector를 선택합니다.
  3. 탐색 컨트롤러 카테고리에는 두 개의 확인란이 있습니다.

    [] 내비게이션 바 표시

    [] 툴바 표시

나를 위해 일했다 ...


8

스위프트 4

viewWillAppear에서 숨 깁니다.

     override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        self.navigationController?.isNavigationBarHidden = true;
    }

그런 다음 segue를 누를 때 다시 넣을 수 있습니다 (다음보기에서 뒤로 버튼을 사용하려는 경우).

     override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
     {
        self.navigationController?.isNavigationBarHidden = false;
     }

3

프로그래밍 방식으로 Swift 3

self.navigationController.isNavigationBarHidden = true

또는

self.navigationController.navigationBar.isHidden = true

참고 : iOS 10에서 테스트하는이 두 가지 접근 방식의 차이는 보이지 않았습니다.


1

이 모든 답변은 여전히 ​​상태 표시 줄 상단에 공백을 남깁니다.이 줄을 추가하여 해당 항목도 제거하세요.

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