[ios] 탐색 모음이없는 UINavigationController?

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

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

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

[self.navigationController setNavigationBarHidden:YES];

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

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



답변

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

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

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


답변

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

self.navigationController.navigationBarHidden = YES;

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

여기에 이미지 설명 입력

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

여기에 이미지 설명 입력


답변

Xcode 4.3.2에서 :

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

    [] 내비게이션 바 표시

    [] 툴바 표시

나를 위해 일했다 …


답변

스위프트 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;
     }


답변

프로그래밍 방식으로 Swift 3

self.navigationController.isNavigationBarHidden = true

또는

self.navigationController.navigationBar.isHidden = true

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


답변

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

navController.navigationBar.isHidden = true
navController.accessibilityFrame = CGRect.zero


답변