TIL19 ✨

YaR Lab·2023년 5월 18일
0

TIL✨

목록 보기
9/135
post-thumbnail

23.05.18

이곳은 하루의 공부를 정리하고 내일 할 공부를 정리하는 곳 입니다

UIViewController

  • UIViewController 클래스는 모든 뷰 컨트롤러에 공통적인 동작을 정의
  • 뷰의 내용을 업데이트
  • 사용자의 뷰와의 상호작용에 응답
  • 뷰의 크기 조정 및 전체 인터페이스의 레이아웃 관리
  • 앱 내 다른 객체(다른 뷰 컨트롤러 포함)와의 조정
  • 뷰를 관리하고 이벤트를 처리하는 역할을 수행
  • 뷰 컨트롤러의 뷰 중에서 실제로 이벤트를 처리하는 뷰가 없는 경우, 뷰 컨트롤러 자체가 이벤트를 처리하거나 상위 뷰로 전달할 수 있는 옵션을 가짐
  • 뷰 계층 구조에서 다른 뷰 컨트롤러에 속하는 뷰의 상위에 위치하며, 응답자 체인에 삽입됨. 이를 통해 뷰 컨트롤러는 해당 뷰 계층 구조에서 이벤트를 처리하거나 상위 뷰로 전달할 수 있음.
  • UIResponder 클래스를 상속받는 UIResponder 객체
  • 일반적으로 한 번에 하나의 뷰 컨트롤러의 뷰만이 보이게 됨
  • 모든 앱은 적어도 하나의 UIViewController의 커스텀 하위 클래스를 포함하고 있음.
  • 뷰 컨트롤러의 루트 뷰는 항상 할당된 공간에 맞게 크기가 조정됨
+---------------------+
|    View Controller  |
|                     |
|  +---------------+  |
|  |   Root View   |  |
|  |               |  |
|  |    Subview    |  |
|  |               |  |
|  |    Subview    |  |
|  |               |  |
|  +---------------+  |
|                     |
+---------------------+
  • View Controller: 뷰 컨트롤러 객체를 내고, 관리하는 뷰와 관련된 동작을 담당함.
  • Root View: 뷰 컨트롤러가 관리하는 뷰 계층 구조에서 최상위에 위치하는 뷰이고 다른 하위 뷰들을 포함하고 있음.
  • Subview: Root View의 하위 뷰로, 뷰 계층 구조에서 Root View에 속한 다른 뷰들을 나타냅니다.

뷰 컨트롤러는 Root View와 그 하위의 뷰들을 관리하며, 이들의 동작과 상호작용을 제어합니다. Root View를 통해 화면에 표시되는 콘텐츠를 관리하고, 사용자의 입력에 응답하며, 뷰들의 크기와 위치를 조정하고, 다른 객체들과의 상호작용을 조정하는 등의 역할을 수행합니다.

UIResponder

  • UIResponder는 이벤트에 응답하는 객체를 나타내며, iOS 앱에서 사용자의 터치나 다른 이벤트에 대한 응답을 처리하는 기능을 제공

responder chain

  • 이벤트가 전달되는 경로를 나타내는 개념
  • 일반적으로, 사용자의 터치 이벤트는 뷰 계층 구조를 따라서 상위로 전달됩니다. 이때, 각 객체는 이벤트를 처리할 수 있는지 여부를 결정하고, 처리할 수 있다면 처리하거나 다음 응답자로 전달합니다.

viewDidLoad() / loadView()

loadView() 메서드는 뷰 컨트롤러의 view 프로퍼티를 직접 생성하고 설정하는 역할을 담당합니다. 이 메서드를 오버라이드하여 뷰를 수동으로 생성하고, 해당 뷰를 view 프로퍼티에 할당합니다. 이렇게 하면 뷰 컨트롤러는 자체적으로 뷰를 생성하고 관리할 수 있습니다. loadView() 메서드는 일반적으로 인터페이스 빌더를 사용하지 않고, 뷰를 코드로 구성하고자 할 때 사용됩니다.

viewDidLoad() 메서드는 뷰 컨트롤러의 뷰가 메모리에 로드된 후에 호출되는 메서드입니다. 이 메서드를 오버라이드하여 초기화 코드를 작성하거나, 뷰와 관련된 추가적인 설정을 수행할 수 있습니다. viewDidLoad()는 뷰가 메모리에 로드된 이후에 호출되므로, view 프로퍼티에 접근하여 뷰와 관련된 작업을 수행할 수 있습니다. 일반적으로 이 메서드는 뷰의 초기 설정이나 데이터 로딩 등의 작업을 수행하는 데 사용됩니다.

요약하자면, loadView()는 뷰를 직접 생성하고 view 프로퍼티에 할당하는 역할을 하며, viewDidLoad()는 뷰가 메모리에 로드된 후에 호출되는 초기화 코드를 작성하는 역할을 합니다.

viewWillAppear(:) 메서드: 화면에 나타나기 전에 뷰를 준비
viewWillDisappear(:) 메서드: 변경 사항이나 상태 정보를 저장

viewWillAppear(:) 메서드에서 특정 작업을 시작하고, 그 작업이 완료된 후에는 viewWillDisappear(:) 메서드에서 작업을 종료해야 합니다. 또는 viewDidAppear(:) 메서드에서 시작한 작업은 viewDidDisappear(:) 메서드에서 종료해야 합니다.

이렇게 함으로써, 뷰 상태 변화에 따른 작업을 적절하게 처리할 수 있습니다. 'will' 콜백 메서드에서 시작한 작업을 'did' 콜백 메서드에서 종료함으로써, 뷰의 전환과 관련된 작업의 일관성과 안정성을 유지할 수 있습니다.

Handle view rotations

iOS 8 이전에는 회전 이벤트에 대한 처리를 위해 별도의 메서드가 제공되었지만, iOS 8부터는 회전을 뷰 컨트롤러의 뷰 크기 변경으로 취급하여 viewWillTransition(to:with:) 메서드를 사용하여 처리

앱을 시작할 때, 인터페이스를 세로 방향으로 설정해야 합니다. application(_:didFinishLaunchingWithOptions:) 메서드가 반환된 후에, 앱은 윈도우를 표시하기 전에 뷰 컨트롤러의 회전 메커니즘을 사용하여 뷰를 적절한 방향으로 회전시킵니다.

View State Method

View State Method란 뷰 컨트롤러에서 뷰와 관련된 상태 변화를 처리하기 위해 제공되는 메서드들을 의미합니다. 이러한 메서드들은 뷰 컨트롤러의 뷰가 화면에 나타나거나 사라지는 등의 변화가 발생할 때 자동으로 호출됩니다. 이를 통해 뷰 컨트롤러는 이러한 변화에 대응하여 필요한 작업을 수행할 수 있습니다.

일반적으로 사용되는 View State Method는 다음과 같습니다:

  1. viewDidLoad(): 뷰 컨트롤러의 뷰가 메모리에 로드되고 초기화된 직후에 호출됩니다. 일반적으로 초기 설정 및 데이터 로드와 같은 초기화 작업을 수행하는 데 사용됩니다.

  2. viewWillAppear(_:): 뷰 컨트롤러의 뷰가 화면에 나타나기 직전에 호출됩니다. 이 시점에서 뷰를 업데이트하거나 특정 동작을 수행하기 위해 사용됩니다.

  3. viewDidAppear(_:): 뷰 컨트롤러의 뷰가 화면에 완전히 나타난 후 호출됩니다. 주로 애니메이션 시작 또는 네트워크 요청과 같은 작업을 수행하는 데 사용됩니다.

  4. viewWillDisappear(_:): 뷰 컨트롤러의 뷰가 화면에서 사라지기 직전에 호출됩니다. 보통 변경된 데이터를 저장하거나 상태를 업데이트하는 등의 작업을 수행하기 위해 사용됩니다.

  5. viewDidDisappear(_:): 뷰 컨트롤러의 뷰가 화면에서 완전히 사라진 후 호출됩니다. 주로 정리 작업이나 애니메이션 종료와 같은 작업을 수행하는 데 사용됩니다.

이러한 View State Method들을 사용하여 뷰 컨트롤러의 뷰 상태 변화에 따라 적절한 작업을 수행할 수 있으며, 뷰의 생명주기를 관리하고 원하는 동작을 구현할 수 있습니다.

firstIndex

UINavigationController

스택기반 컨테이너 뷰컨트롤러이다
한 번에 하나의 뷰만 보여진다
배열(스택기반)의 첫번째 뷰 컨트롤러는 루트 뷰컨트롤러 이다
배열의 마지막 뷰가 보여지고 있는 뷰이다
세그웨이 또는 네비컨트롤러 클래스 메서드를 이용해 스택을 관리 할 수 있다
상단의 back버튼을 누르거나 왼쪽 모서리에서 쓸어넘기는 식으로 스택에서 마지막 뷰를 제거 할 수 있다
상단에 위치한 네비게이션 바를 관리하고, 하단에 위치한 옵셔널 툴바를 관리한다
네비게이션 바는 항상 보여지고 네이게이션컨트롤러에 의해 관리 된다
자식 뷰컨트롤러가 생기면 네비게이션 바는 업데이트 된다

네비게이션 컨트롤러는 델리게이트 객체와 협력하여 동작
델리게이트 객체를 통해 뷰 컨트롤러를 푸시하거나 팝할 때의 동작을 재정의할 수 있다.

delegate

네비게이션 컨트롤러와 관련된 이벤트 및 동작을 처리하기 위해 사용
델리게이트 객체는 UINavigationControllerDelegate 프로토콜을 따라야함

  • 뷰 컨트롤러의 푸시(push) 및 팝(pop) 동작을 커스텀하게 처리
  • 사용자 정의 애니메이션 전환(transition) 효과 제공
  • 네비게이션 인터페이스의 우선 방향(preferred orientation) 지정

optional toolbar

safari에서 밑에 있는거

isToolbarHidden

초기 값은 true이고, true일때 툴바가 안보인다
false일때 네비게이션 컨트롤러가 업데이트한다 네비게이션바와 함께

0개의 댓글