Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
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
Tags
more
Archives
Today
Total
관리 메뉴

Olive Study Room

[iOS] UINavigationController, ViewController Life cycle, 화면 전환 본문

Coding/iOS

[iOS] UINavigationController, ViewController Life cycle, 화면 전환

Olive Dev 2022. 1. 11. 18:10

Content View Controller

  • 화면을 구성하는 뷰를 직접 구현하고 관련된 이벤트를 처리하는 뷰 컨트롤러
  • 스토리보드 생성시 기본으로 생성되는 controller

 

Container View Controller

  • child view controller를 갖고 관리하고 레이아웃과 화면 전환을 담당한다.
  • 화면 구성과 이벤트 관리는 child view controller애서 한다.
  • ex) Navigation Controller, TabBar Controller

 

UINavigationController

  • 계층구조로 구성된 콘텐츠를 순차적으로 보여준다.
  • 네비게이션 스택(LIFO) 자료구조를 사용
  • 루트뷰 위에 자식 뷰가 올라가도 루트뷰는 메모리에서 삭제되지 않는다. 자식 뷰들은 pop될 때 메모리에서도 사라진다.
  • Segueway나 UINavigationController 메소드를 사용하여 화면을 전환한다.
  • 최상단 뷰 제거는 왼쪽 상단 back이나 왼쪽 스와이프를 통해 할 수 있다.

 

 

 


https://suryakantsharma84.medium.com/viewcontroller-life-cycle-in-ios-5192a02363e1

 

  • Appearing : 뷰가 화면에 나타나는 중
  • Appeared : 뷰가 화면에 나타나는게 완료된 상태
  • Disappearing : 뷰가 화면에서 사라지는 중
  • Disappeared : 뷰가 화면에서 사라진 상태

1. ViewDidLoad() 

  • 뷰 컨트롤러가 메모리에 로드되고 난 후 호출
  • 메모리에 처음 로드할 때 한 번만 호출(root view 일 때)
  • 뷰와 관련된 추가적인 초기화 작업, 네트워크 호출
  • 프로젝트를 새로 만들면 ViewController에 이미 생성되어있는 메소드

주의!

iOS에서 뷰는 스택구조다.

네비게이션에서 루트뷰(A뷰)로 갔다가 pop된 이전 뷰(B뷰)로 가게 되면 B뷰는 다시 메모리에 로드되어야 하기 때문에

다시 ViewDidLoad()를 호출한다. 

 

2. ViewWillAppear()

  • 뷰가 뷰 계층에 추가되고 화면에 보이기 직전에 매 번 호출
  • 다른 뷰로 이동했다가 돌아오면 재호출
  • 뷰와 관련된 추가적인 초기화 작업

3. ViewDidAppear() 

  • 뷰 컨트롤러에 뷰 계층이 추가된 것을 알림
  • 뷰를 나타낼 때 필요한 추가 작업
  • 애니메이션을 시작하는 작업

4. ViewWillDisappear()

  • 뷰 계층이 사라지기 전에 호출
  • 뷰가 생성된 뒤 작업한 내용을 되돌리는 작업
  • 데이터를 저장하는 작업

5. ViewDIdDisappear()

  • 뷰가 사라진 뒤 호출
  • 뷰가 사라지는 것과 관련된 추가 작업

 


 

 

root뷰에서 버튼 클릭으로 second뷰로 갔을 때 출력 결과

 

두번째 뷰가 생성됨과 동시에 루트 뷰가 종료되는 것을 볼 수 있다. 

 

이전 root뷰로 갈 때 

second뷰가 pop됨과 동시에 root뷰가 push된다.

 

다시 두번째 뷰로 갈 때

다시 두번째 뷰가 메모리에 로드되는 것을 알 수 있다. 역시 두번째 뷰가 push됨과 동시에 루트 뷰가 pop된다.

 


화면 전환 방법

1. View Controller의 View 위에 다른 View를 가져와 바꿔치기

보통 사용하지 x(메모리 누수 발생)

 

2. View Controller에서 다른 View Controller 호출, 전환

present, dismiss 메소드 사용

 

3. Navigation Controller를 이용하여 화면 전환

pushViewController, popViewController 메소드 사용)

 

4. 화면 전환용 객체 세그웨이 사용하여 전환

스토리보드를 통해 출발지, 목적지를 직접 지정하는 방식. 코드없이 구현 가능함

Action Segueway : 출발점이 view controller 자체일 때 

  종류

1. Show

2. Show Detail

3. Present Modally

4. Present As Popover

5. Custom

 

 

 

 

 

 

 

 

Manual Segueway :  출발점이 버튼 또는 셀 등일 경우(perform segue 메소드 사용)

 

Comments