기어가더라도 제대로

UIViewController 본문

UIKit 기초

UIViewController

Damagucci-juice 2022. 2. 18. 12:03

개인 공부 목적의 글입니다. 개선 환영합니다.

학습 목표

* 역할과 의의
* 기초 용어
* Window와 RootViewController
* View와 Controller의 관계
* 뷰 라이프 사이클
* Modal과 Transition

View Controller의 역할

  • 뷰의 계층 관리
  • 뷰와 데이터 사이의의 매개체
  • 메모리등 자원 관리(언제 메모리에 올릴지, 내릴지)
  • 화면 사이즈, 회전에 대한 대응

MVC에서의 C

MVC

  • MVC 패턴에서 C를 담당합니다.
  • 화면 전체 콘텐츠를 담당하거나 특정영역을 담당합니다.
  • 내부 프로퍼티로 모델 객체를 포함하기도 합니다.
  • 대부분은 View Controller의 흐름으로 구성

주요 콜백

화면 전환에 관련된 콜백

  • viewDidLoad() : 메모리에 뷰 컨트롤러를 올림
  • viewWillAppear(Bool) : 곧 화면에 나타날 것을 알림
  • viewDidAppear(Bool) : 화면에 나타났음을 알림
  • viewWillDisappear(Bool) : 곧 화면에서 사라질 것을 알림
  • viewDidDisappear(Bool) : 화면에서 사라졌음을 알림

화면 회전에 관한 콜백

  • shoulAutorotate() : 화면 전환을 자유자재로 한 건지..
  • interfaceOriented ~ : ?
  • 하나 더있는데 놓쳤습니다...

윈도우 씬, 윈도우와 Root View Controller

사실 이 부분이 개념이 와닿질 않습니다..

  • Window Scene : 멀티신을 지원하는 부분?? 어떤 영역에 대한 경계정보만을 담는 느낌
  • window : rootViewController.view를 띄우기전에 검정 배경만 있는 부분, 화면에 보이는 콘텐츠를 제공하지 않습니다. 화면에 보이는 모든 콘텐츠는 앱의 스토리보드에서 구성하는 rootViewController에서 제공합니다. UIWindow의 역할은 UIKit에서 이벤트를 수신하고, 관련된 이벤트를 루트 뷰 컨트롤러 및 관련 뷰에 전달하는 것입니다. 간단하게 말하자면, UIWindow 는 앱의 뷰 계층 구조에서 최상단에 고정되어 위치하며, 앱의 화면 콘텐츠에 대한 컨테이너 역할을 합니다. 앱의 뷰, 뷰 컨트롤러와 함께 작동하여 화면에 표시되는 뷰 계층 구조에 터치 이벤트를 전달하고, 화면 방향 변경과 같은 변경 사항을 관리합니다.
  • rootviewcontroller.view : 실제로 보이는 콘텐츠를 담고 있는 부분.

야곰닷넷 질문과답변

Scene, UIScene, UIWindow Scene

그림

Custom View Controller

view 계층 구조에 맞춰서 뷰 컨트롤러를 다루기

  • UIViewController의 서브 클래스
    • 상속을 받아서 원하는 동작 구현
  • 필요한 APT Method를 오버라이드(Override)하여 사용
  • 자신만의 비지니스 로직 추가
  • 앱의 동작 흐름에 맞추기

Modal Presenting VS Presented, Modal Presentation style

다음 화면을 어떻게 띄울 것인지, 서로에 대한 관계

  • rootViewController.view 가 띄운 화면(presented) > 파랑화면
  • 자신을 띄우는 화면(presenting) > rootViewController.view

Screen Shot 2022-02-18 at 11 15 27 AM

출처 : 코드스쿼드 내부 강의자료(비공개 영상)

다양한 Modal Presentation style이 있는데 시도를 해보는 것이 좋겠다.

참조블로그

System View Controller

빌트인 되어있는 뷰 컨트롤러이다. 예를 들어 이미지를 담는 컨트롤러라든지, 공유할 때의 뷰들을 담고있는 뷰컨트롤러라든지, 프린트를 할 때 뷰, 뷰 내부에 단어를 찾을 때의 뷰(cmd + f)들을 가정하고 특정 상황에 맞춰 시스템에 내장되어있는 뷰컨트롤러이다. 어떤 비지니스 로직을 구현하기 전에 이미 있는지 확인 하는 것이 중요한 것같다.

Comments