[iOS] Navigation Controller

RudinP·2024년 2월 23일
0

Study

목록 보기
176/227

역할

  • 화면 위쪽에 네비게이션 바를 추가
  • 뷰 컨트롤러를 관리
    • 새로운 화면을 표시, 이전 화면으로 돌아가는 것 처리
    • 화면을 이동할때마다 네비게이션 바에 있는 버튼과 타이틀도 업데이트
  • 컨테이너는 네비게이션 바나 툴바를 뺀다면 그 자체로 뭔가를 출력하지는 않고, 가장 먼저 화면에 표시되는 것은 첫번째로 관리하고 있는 뷰 컨트롤러

  • 직접 네비게이션 바를 추가하면 스크롤 시 자동전환이나 세이프에리어 색 설정까지 신경쓸 게 많기 때문에 Navigation Controller Embed를 추천한다.

  • 실제 뷰 컨트롤러에도 네비게이션 바의 영역이 추가되어있음을 확인 가능하다.

Prefers Large Titles

  • 체크 시 제목 부분의 폰트 크기가 커진다.

타이틀 변경

  • 네비게이션 바의 속성을 바꾸고자 할 땐 네비게이션 컨트롤러의 인스펙터에서 바꾸면 된다.
  • 타이틀을 변경하고 싶다면 본래의 뷰 컨트롤러에서 네비게이션 바를 선택하면 바꿀 수 있다.

  • 실행 시 Title이라고 적혀있는 네비게이션 컨트롤러의 화면은 보이지 않는다.
  • 이는 VC의 종류가 두 가지이기 때문이다.

Container View Controller

  • 뷰를 추가할 수 없다.
  • 다른 뷰를 관리하는 컨트롤러
  • 왼쪽 뷰컨트롤러에 해당
  • 다른 예시로는 탭 바 컨트롤러가 있다.

Content View Controller

  • 실제로 UI를 표시하는 뷰 컨트롤러이다.
  • 오른쪽 뷰컨트롤러에 해당

배치할 때 화면 전체를 채워야 한다.

  • 그래야 스크롤이 자연스럽게 된다.

혹시라도 중복으로 VC에 Navigation Bar가 있다면 지워주자

  • 이렇게 되있으면 스크롤 시 자동적용이 안된다.

  • present, pop 형식으로 새로운 화면으로 넘어갈 경우 해당 화면까지 이전의 네비게이션 컨트롤러가 관리하지 않는다.
  • 따라서 상단 이미지와 같이 다른 네비게이션 컨트롤러를 추가해주어야 한다.
  • 바로 연결되어 있다면 바로 segue.destination으로 접근 가능하다.
  • 그렇지 않고 Navigation View Controller가 껴있다면 segue.destination.children 속성으로 접근하면 된다. 만약 하나만 있다면 segue.destination.children.first
profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글