UIViewController
의 viewWillAppear
메서드는 화면에 뷰 컨트롤러의 뷰가 화면에 나타날 때 마다 호출되는 생명주기 메서드입니다.
따라서 viewWillAppear
는 뷰가 화면에 돌아올 때 마다 무언가를 할 수 있게 해주죠.
하지만 viewWillAppear
가 필요한 뷰 컨트롤러에 작성을 해주었음에도 뷰가 화면에 돌아올 때 마다 실행되지 않았습니다.
현재 상황은,
ViewController
클래스에서 FormViewController
클래스를 present Modally
방법으로 세그웨이를 통해 화면이동을 하고 있습니다 :
그리고 FormViewController
뷰 컨트롤러의 뷰에서 Submit
버튼을 클릭하면 FormViewController
를 띄워주고 있는 ViewController
로 되돌아 갑니다 :
그리고 ViewController
에서는 viewWillAppear
메서드를 통해 화면에 뷰가 나타날 때 마다 로직이 실행되길 기대했습니다.
하지만! 처음에 앱이 실행될 때를 빼고는 뷰가 화면에 나타나더라도 다시 viewWillAppear
가 호출되지 않았습니다 :
이는 애플이 iOS 13부터 기본 프레젠테이션 스타일을 풀 스크린이 아닌 형태로 변경했기 때문에, 현재 뷰 컨트롤러를 닫더라도 viewWillAppear
를 호출하지 않기 때문입니다.
따라서 세그웨이를 통해 화면을 이동할 때, 기본 프레젠테이션 스크린을 풀 스크린으로 변경해주면 viewWillAppear
가 매번 호출 됩니다 :
해결되었습니다~! 👏😎
지금까지 present modally
로 화면을 이동했을 때 viewWillAppear
가 다시 호출되지 않는 이유와 해결방법에 대해 알아보았습니다.