티스토리 뷰

SeSAC 과제를 하다가 특정 뷰컨트롤러로 넘어갈 때 Navigation Bar가 보이지 않게끔 설정해야 할 때가 있었습니다.

들어가기에 앞서 ViewController의 생명주기에 대해 살펴 보고 넘어가겠습니다!
viewDidLoad()와 viewWillAppear()를 살펴보면

viewDidLoad()

  • 뷰계층이 최초 메모리에 로드 된 후 호출되는 메서드
  • 메모리에 처음 로딩 될 때 1회만 호출된다.

viewWillAppear()

  • 다른 뷰에 갔다가 다시 돌아오는 상황에 해주고 싶은 처리에서 사용한다.
  • viewDidLoad()와 구분할 것

이렇게 설명을 할 수 있습니다.
네비게이션바를 특정 뷰컨에서 없애는 것과 이게 무슨 관련이 있는데? 라고 의문이 드실텐데요.

위의 사진에서 보듯이 viewDidLoad()는 메모리에서 삭제되지 않으면 계속 남아있고, 삭제 해줄 때 까지 다시 재생되지 않습니다.
또한, viewWillAppear()은 메모리에 뷰가 있다면 호출이 됩니다.
즉, viewDidLoad()는 처음 로딩될 때 1회 호출이 되는 것이고 viewWillAppear()은 매번 뷰가 다시 보일 때마다 실행됩니다!!!
네비게이션바도 매번 보여줘야 하니까 viewWillAppear()에 보여주는 것입니다.

 // 뷰 컨트롤러가 나타날 때 숨기기 override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) navigationController?.setNavigationBarHidden(true, animated: true) }


위의 코드를 사용하면 간단하게 해결하실 수 있습니다!

viewWillDisappear() 메서드와 함께 사용하실 수 있는데요!
이 부분은 나중에 살펴보겠습니다!!

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함