UITabBarController

Groot·2022년 10월 25일
0

TIL

목록 보기
88/153
post-thumbnail

TIL

🌱 난 오늘 무엇을 공부했을까?

📌 UITabBarController - 공식문서 읽기

  • 다중 선택 인터페이스를 관리하는 컨테이너 View Controller로, 선택 항목에 따라 표시할 자식 View Controller가 결정됩니다.

📍 Overview

  • 탭 표시줄 인터페이스는 창 하단에 탭을 표시하여 다른 모드 중에서 선택하고 해당 모드에 대한 View를 표시합니다.

  • 이 클래스는 일반적으로 있는 그대로 사용되지만 하위 클래스로 분류될 수도 있습니다.

  • 탭 표시줄 Controller 인터페이스의 각 탭은 사용자 지정 View Controller와 연결됩니다.

  • 사용자가 특정 탭을 선택하면 탭 막대 Controller는 이전 View를 대체하여 해당 View Controller의 Root View를 표시합니다. (사용자 탭은 이전에 선택한 탭에 관계없이 항상 탭의 루트 View를 표시합니다. 이는 탭이 이미 선택되어 있어도 마찬가지입니다.)

  • 탭을 선택하면 인터페이스의 내용이 바뀌므로 각 탭에서 관리하는 인터페이스의 유형은 어떤 식으로든 비슷할 필요가 없습니다.

  • 사실, 탭 바 인터페이스는 일반적으로 다른 유형의 정보를 표시하거나 완전히 다른 스타일의 인터페이스를 사용하여 동일한 정보를 표시하는 데 사용됩니다.

  • 그림 1은 시계 앱에서 제공하는 탭 모음 인터페이스를 보여줍니다.

  • 각 탭은 일종의 시간 기반 정보를 제공합니다.

    그림 1.


  • 탭 표시줄 Controller의 탭 표시줄 View에 직접 액세스해서는 절대 안 됩니다.

  • 탭 표시줄 Controller의 탭을 구성하려면 각 탭에 대한 루트 View를 제공하는 View Controller를 viewControllers 속성에 할당합니다.

  • View Controller를 지정하는 순서에 따라 탭 표시줄에 표시되는 순서가 결정됩니다.

  • 이 속성을 설정할 때 selectedViewController 속성에 값을 할당하여 처음에 선택된 View Controller를 나타내야 합니다. (selectedIndex 속성을 사용하여 배열 인덱스로 View Controller를 선택할 수도 있습니다.)

  • 탭 바 Controller의 View(상속된 View 속성을 사용하여 획득)를 앱 창에 포함할 때, 탭 표시줄 Controller는 자동으로 해당 View Controller를 선택하고 콘텐츠를 표시하여 탭 표시줄 인터페이스에 맞게 크기를 조정합니다.

  • 탭 표시줄 항목은 해당 View Controller를 통해 구성됩니다.

  • 탭 표시줄 항목을 View Controller와 연결하려면 UITabBarItem 클래스의 새 인스턴스를 만들고 View Controller에 맞게 구성한 다음 View Controller의 tabBarItem 속성에 할당합니다.

  • View Controller에 대한 사용자 지정 탭 표시줄 항목을 제공하지 않으면 View Controller는 View Controller의 제목 속성에서 이미지와 텍스트가 포함되지 않은 기본 항목을 만듭니다.

  • 사용자가 탭 모음 인터페이스와 상호 작용할 때 탭 모음 Controller 개체는 상호 작용에 대한 알림을 대리자에게 보냅니다.

  • 대리자는 지정한 모든 개체가 될 수 있지만 UITabBarControllerDelegate 프로토콜을 준수해야 합니다.

  • 대리자를 사용하여 특정 탭 표시줄 항목이 선택되지 않도록 하고 탭이 선택될 때 추가 작업을 수행할 수 있습니다.

  • 대리자를 사용하여 추가 탐색 Controller에서 수행한 탭 표시줄의 변경 사항을 모니터링할 수도 있습니다.

📍 The views of a tab bar controller

  • UITabBarController 클래스는 UIViewController 클래스에서 상속되기 때문에 탭 막대 Controller에는 view 속성을 통해 액세스할 수 있는 자체 View가 있습니다.
  • 탭 표시줄 Controller의 View는 탭 표시줄 View 및 사용자 정의 콘텐츠가 포함된 View의 컨테이너일 뿐입니다.
  • 탭 표시줄 View는 사용자를 위한 선택 컨트롤을 제공하며 하나 이상의 탭 표시줄 항목으로 구성됩니다.
  • 다음 이미지는 전체 탭 표시줄 인터페이스를 표시하기 위해 이러한 View를 조합하는 방법을 보여줍니다.
  • 탭 표시줄 및 도구 모음 View의 항목은 변경할 수 있지만 이를 관리하는 View는 변경되지 않습니다. 현재 선택한 탭의 View Controller를 반영하도록 사용자 정의 콘텐츠 View만 변경됩니다.

  • 탐색 Controller 또는 사용자 정의 View Controller를 탭의 루트 View Controller로 사용할 수 있습니다.
  • 루트 View Controller는 탐색 Controller이고 탭 표시줄 Controller는 탭 표시줄과 겹치지 않도록 표시된 탐색 콘텐츠의 크기를 추가로 조정합니다.
  • 따라서 탭 표시줄 인터페이스에 표시하는 모든 View에는 어떤 조건에서도 View의 크기를 적절하게 조정하도록 autoresizingMask 속성이 설정되어 있어야 합니다.

📍 The More navigation controller

  • 탭 표시줄에는 사용자 지정 항목을 표시할 수 있는 공간이 제한되어 있습니다.

  • 탭 표시줄 Controller에 6개 이상의 사용자 정의 View Controller를 추가하면 탭 표시줄 Controller는 탭 표시줄에 처음 4개 항목과 표준 추가 항목만 표시합니다.

  • 추가 항목을 탭하면 나머지 항목을 선택하기 위한 표준 인터페이스가 나타납니다.

  • 표준 추가 항목에 대한 인터페이스에는 사용자가 탭 표시줄을 재구성할 수 있는 편집 버튼이 있습니다. 기본적으로 사용자는 탭 표시줄의 모든 항목을 재정렬할 수 있습니다.

  • 그러나 사용자가 일부 항목을 수정하지 못하도록 하려면 CustomizedViewControllers 속성의 배열에서 적절한 View Controller를 제거할 수 있습니다.

탭 바 사용자 정의 및 More 인터페이스는 tvOS에서 사용할 수 없습니다.

📍 State preservation

  • iOS 6 이상에서 이 View Controller의 restoreIdentifier 속성에 값을 할당하면 선택한 탭의 View Controller에 대한 참조가 유지됩니다.

  • 복원 시 참조를 사용하여 동일한 View Controller가 있는 탭을 선택합니다.

  • 탭 표시줄 Controller를 유지하는 경우, 유지하려는 자식 View Controller에 고유한 복원 식별자를 할당합니다.

  • 자식 View Controller에서 복원 식별자를 생략하면 해당 탭이 기본 구성으로 돌아갑니다.

  • 탭 표시줄 Controller는 viewControllers 속성에 나열된 것과 동일한 순서로 탭을 저장하지만 저장 순서는 실제로 관련이 없습니다.

  • 하의 코드는 다음 실행 주기 동안 새 탭 표시줄 Controller를 제공할 책임이 있습니다.

  • 상태 보존 시스템은 탭의 위치가 아닌 할당된 복원 식별자를 기반으로 각 탭의 내용을 복원합니다.

profile
I Am Groot

0개의 댓글