티스토리 뷰
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() 메서드와 함께 사용하실 수 있는데요!
이 부분은 나중에 살펴보겠습니다!!
'[Swift] 이것저것' 카테고리의 다른 글
[Swift] SnapKit에서 lazy var 와 let (4) | 2022.02.21 |
---|---|
[Swift] @Main @UIApplicationMain가 무엇인가? (5) | 2022.02.18 |
[Swift] Content Hugging, Compression resistance (0) | 2021.09.26 |
[Swift] 화면 터치 시 모달창 내리기 (0) | 2021.08.19 |
[Swift] Storyboard doesn't contain a view controller with identifier (0) | 2021.07.28 |
댓글