rudin_.log
로그인
rudin_.log
로그인
[iOS] Navigation Controller
RudinP
·
2024년 2월 23일
팔로우
0
iOS
스터디
0
Study
목록 보기
176/227
역할
화면 위쪽에 네비게이션 바를 추가
뷰 컨트롤러를 관리
새로운 화면을 표시, 이전 화면으로 돌아가는 것 처리
화면을 이동할때마다 네비게이션 바에 있는 버튼과 타이틀도 업데이트
컨테이너는 네비게이션 바나 툴바를 뺀다면 그 자체로 뭔가를 출력하지는 않고, 가장 먼저 화면에 표시되는 것은 첫번째로 관리하고 있는 뷰 컨트롤러
Navigation Controller Embed
직접 네비게이션 바를 추가하면 스크롤 시 자동전환이나 세이프에리어 색 설정까지 신경쓸 게 많기 때문에 Navigation Controller Embed를 추천한다.
실제 뷰 컨트롤러에도 네비게이션 바의 영역이 추가되어있음을 확인 가능하다.
Prefers Large Titles
체크 시 제목 부분의 폰트 크기가 커진다.
타이틀 변경
네비게이션 바의 속성을 바꾸고자 할 땐 네비게이션 컨트롤러의 인스펙터에서 바꾸면 된다.
타이틀을 변경하고 싶다면 본래의 뷰 컨트롤러에서 네비게이션 바를 선택하면 바꿀 수 있다.
Navigation Controller가 화면에 표시되지 않는 이유
실행 시 Title이라고 적혀있는 네비게이션 컨트롤러의 화면은 보이지 않는다.
이는 VC의 종류가 두 가지이기 때문이다.
Container View Controller
뷰를 추가할 수 없다.
다른 뷰를 관리하는 컨트롤러
왼쪽 뷰컨트롤러에 해당
다른 예시로는 탭 바 컨트롤러가 있다.
Content View Controller
실제로 UI를 표시하는 뷰 컨트롤러이다.
오른쪽 뷰컨트롤러에 해당
Navigation Controller + TableView
배치할 때 화면 전체를 채워야 한다.
그래야 스크롤이 자연스럽게 된다.
혹시라도 중복으로 VC에 Navigation Bar가 있다면 지워주자
이렇게 되있으면 스크롤 시 자동적용이 안된다.
Navigation Bar 담당 영역
present, pop 형식으로 새로운 화면으로 넘어갈 경우 해당 화면까지 이전의 네비게이션 컨트롤러가 관리하지 않는다.
따라서 상단 이미지와 같이 다른 네비게이션 컨트롤러를 추가해주어야 한다.
Navigation Controller가 껴있을 때 데이터 전달
바로 연결되어 있다면 바로
segue.destination
으로 접근 가능하다.
그렇지 않고 Navigation View Controller가 껴있다면
segue.destination.children
속성으로 접근하면 된다. 만약 하나만 있다면
segue.destination.children.first
RudinP
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>
팔로우
이전 포스트
[iOS] Text Delegate로 특정 문자만 입력 필터하기
다음 포스트
[iOS] Optional Unwrapping - IUO
0개의 댓글
댓글 작성