code

Swift에서 첫 번째 ViewController에서 탐색 모음을 숨기려면 어떻게 해야 합니까?

starcafe 2023. 4. 18. 23:09
반응형

Swift에서 첫 번째 ViewController에서 탐색 모음을 숨기려면 어떻게 해야 합니까?

첫 번째 ViewController 또는 특정 ViewController에서 탐색 모음을 빠르게 숨기려면 어떻게 해야 합니까?

에서 다음 코드를 사용했습니다.viewDidLoad():

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.isNavigationBarHidden = true
}

또, 또,viewWillAppear:

override func viewWillAppear(animated: Bool) {
    self.navigationController?.isNavigationBarHidden = true
}

두 방법 모두 탐색 컨트롤러를 모든 ViewController에서 숨깁니다.

다른 모든 보기에 막대가 표시되어야 한다는 것을 알고 있는 경우 다음을 사용할 수 있습니다.viewWillDisappear다시 표시되도록 설정합니다.

Swift의 경우:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.setNavigationBarHidden(true, animated: animated)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationController?.setNavigationBarHidden(false, animated: animated)
}

스위프트 3

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

    // Hide the navigation bar on the this view controller
    self.navigationController?.setNavigationBarHidden(true, animated: animated)
}

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

    // Show the navigation bar on other view controllers
    self.navigationController?.setNavigationBarHidden(false, animated: animated)
}

숨김을 해제할 수 있습니다.navigationControllerviewWillDisappear

override func viewWillDisappear(animated: Bool)
{
    super.viewWillDisappear(animated)
    self.navigationController?.isNavigationBarHidden = false
}

스위프트 3

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

    self.navigationController?.setNavigationBarHidden(false, animated: animated)
}

또한 이 확장 기능을 생성하여 모든 뷰 컨트롤러에 반복해서 구현하지 않고도 확장을 재사용할 수 있습니다.

import UIKit

extension UIViewController {
    func hideNavigationBar(animated: Bool){
        // Hide the navigation bar on the this view controller
        self.navigationController?.setNavigationBarHidden(true, animated: animated)

    }

    func showNavigationBar(animated: Bool) {
        // Show the navigation bar on other view controllers
        self.navigationController?.setNavigationBarHidden(false, animated: animated)
    }

}

따라서 다음과 같이 확장 방법을 사용할 수 있습니다.

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

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        showNavigationBar(animated: animated)
    }

Swift 3에서는 isNavigationBarHidden Property를 사용하여 탐색 모음을 표시하거나 숨길 수도 있습니다.

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    // Hide the navigation bar for current view controller
    self.navigationController?.isNavigationBarHidden = true;
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    // Show the navigation bar on other view controllers
   self.navigationController?.isNavigationBarHidden = false;
}

Swift에서 탐색 모음을 숨기는 방법:

self.navigationController?.setNavigationBarHidden(true, animated: true)
self.navigationController?.navigationBar.isHidden = true
self.navigationController?.isNavigationBarHidden = true

첫 번째 뷰 컨트롤러에서 탐색 막대를 숨기려는 경우

override func viewWillAppear(animated: Bool) {
   self.navigationController?.isNavigationBarHidden = true
}

두 번째 뷰 컨트롤러에 네비게이션 바를 표시하다

override func viewWillAppear(animated: Bool) {
   self.navigationController?.isNavigationBarHidden = false
}

Swift에서 탐색 모음을 표시하는 방법:

self.navigationController?.setNavigationBarHidden(false, animated: true)
self.navigationController?.navigationBar.isHidden = false
self.navigationController?.isNavigationBarHidden = false
     private func setupView() {
            view.backgroundColor = .white
            navigationController?.setNavigationBarHidden(true, animated: false)
        }

대안

viewDiLoad에서 이 설정을 사용했습니까?

title = "Madman"
navigationController?.isNavigationBarHidden = false
navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.largeTitleDisplayMode = .always

Collectionview, Scrollview 또는 tableView의 제약조건을 확인합니다.

 NSLayoutConstraint.activate([
            tableView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
            tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
            tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor)
        ])
    /*.  Swift 5  */     
    let controller =  self.storyboard?.instantiateViewController(withIdentifier: "sc_userNavigation") as! UserNavigationViewController
    let navigationController = UINavigationController(rootViewController: controller)
    navigationController.setNavigationBarHidden(true, animated: false)
    navigationController.modalPresentationStyle = .fullScreen
    self.present(navigationController, animated: false, completion: nil)

IOS 8에서는 다음과 같이 합니다.

navigationController?.hidesBarsOnTap = true

단, UINavigation Controller의 일부일 경우에만

돌려받고 싶을 때 거짓으로 만들어라

위의 변형을 사용하여 다른 NavController에 내장되어 있는 앱의 섹션을 분리합니다.이렇게 하면 시야를 재설정할 필요가 없습니다.예를 들어 시작 시퀀스에서 매우 유용합니다.

뷰의 set hide method를 호출합니다.Will as are and Delete 。호출하지 않을 경우 표시된 메서드는 상태가 false로 사라집니다.전체 탐색 계층에서 탐색 모음을 숨깁니다.

 override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.setNavigationBarHidden(true, animated: true)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    self.navigationController?.setNavigationBarHidden(false, animated:true)
}

윈도우 컨트롤러(Swift3)에서 실행할 수 있습니다.

class WindowController: NSWindowController {

    override func windowDidLoad() {
        super.windowDidLoad()

        window?.titleVisibility = .hidden
    }
}

언급URL : https://stackoverflow.com/questions/29209453/how-to-hide-a-navigation-bar-from-first-viewcontroller-in-swift

반응형