🦜 Swift

[iOS] 뷰 컨트롤러의 수명 주기, 팝업창 띄우기 - 2

ji-hyun 2023. 5. 13. 17:43

뷰 컨트롤러의 수명 주기

 

// < 뷰 컨트롤러의 수명주기 (Life Cycle) >
// viewDidLoad : 뷰가 생성될 때 한번만 호출됨. (초기화 용도)
// viewWillAppear : 뷰가 화면에 보일 때마다 호출됨. (화면 갱신 용도)
// viewDidAppear : 뷰가 화면에 보이고 나서 매번 호출됨.
// viewWillDisappear : 뷰가 화면에 사라지기 전마다 호출됨. (데이터 전달)
// viewDidDisappear : 뷰가 화면에 사라지고 나서 매번 호출됨.
// viewWillLayoutSubviews : 컨트롤(서브뷰)들의 레이아웃을 잡기 전에 호출됨.
// viewDidLayoutSubViews : 컨트롤들의 레이아웃을 잡고 나서 호출됨

 

 

 

 

 

위와 같은 수명 주기로 생성된다.

다른 화면으로 이동 시 다음과 같이 호출됨

 

 

 

 

back 할 시, 다음과 같이 호출됨.

 

viewDidAppear 는 많이 쓰이지 않음

 

 

여기서 주의할 점은

1. viewWillAppear 는 화면을 돌아와도 호출이 되지만 viewDidLoad 는 화면이 생성될 때만 호출된다!

2. 자주 쓰이는 것은 viewDidLoad, viewWillAppear, viewWillDisappear 가 자주 쓰임

3. viewWillLayoutSubviews, viewDidLayoutSubviews 이 둘은 IB 에서 layout 을 잡는데 사용자의 배치가 있는데 내가 원하는 지점에 나중에 유저 코드로 수동적으로 바꾸고 싶을 때... 그런 경우가 바로 쓰이는 경우이다.

 

 


 

팝업창 띄우기

 

 

1. Seque 로 이동하는 방법

위와 같이 메인화면의 버튼을 팝업창 화면으로 드래그하면 창이 뜨는데 여기서 present Modally 를 클릭해준다

 

2. 코드로 이동하는 방법

NewVC 에 대한 설명은 앞서 포스팅한 네비게이션 컨트롤러와 굉장히 유사하다.

2023.05.13 - [🦜 Swift] - [iOS] Navigation Controller 공부 기록 - 1

 

 @IBAction func onBtnPopup(_ sender: UIButton) {
        let NewVC = self.storyboard?.instantiateViewController(withIdentifier: "PopupVC") as! PopupViewController
        self.present(NewVC, animated: true, completion: nil)
    }


@IBAction func onBtnClose(_ sender: UIButton) {
        self.dismiss(animated: true, completion: nil)
        // completion 은 팝업창 닫고 후에 실행할 코드가 있을 때 작성해준다
    }

 

팝업창 코드는 위와 같이 present, dismiss 를 기억해두자!