View

300x250

이번에 공부한 내용은 네비게이션입니다. 크게 어렵지는 않은 내용이지만, 앱을 만들때 핵심적이고 중요하게 다뤄질 것 같다는 생각이 들어요. 화면 구성의 예시에 대해 보면서, 이 컨트롤러의 사용 방법에 대해 설정화면, 굿노트, 스냅시드처럼 평소에도 유용하게 사용하고 있는 많은 앱들이 떠올랐거든요. 개념적인 면을 잘 잡아두고, 코드로도 이러한 사항들을 예쁘게 구현해봐야겠습니다. ㅋㅋㅋㅋ

네이버나 구글같은데서 검색해서 자료를 보는 것도 좋지만 부스트코스의 무료강의인 iOS 앱개발을 수강해보는 것도 추천합니다! iOS 개발에 대한 내용이나 자료들도 잘 정리해뒀고, Swift를 처음 공부할 사람이 보기에 좋은 문서나 꼭 필요한 내용에 대한 설명,링크를 달아두어 공부하는데 도움이 많이 돼용!


네비게이션

네비게이션 컨트롤러는 여러 네비게이션 인터페이스를 구현할 수 있습니다. iOS에서 주로 사용하는 방식은 계층구조에서 활용하는 드릴 다운 인터페이스입니다.

드릴 다운 인터페이스란 바로 이런것!

네비게이션 컨트롤러

네비게이션 자체가 화면에 대한 관리를 담당하기 때문에, 네비게이션 컨트롤러는 화면을 나타내주는 뷰 컨트롤러를 관리하는 역할을 담당합니다. 뷰를 네비게이션 스택에 담아둘 수 있기때문에, 네비게이션 컨트롤러는 컨테이너 뷰 컨트롤러이기도 합니다. 이 컨테이너 (네비게이션 스택)에 담기는 뷰 컨트롤러들을 컨텐츠 뷰 컨트롤러라고 부릅니다.

이런 느낌이겠군요!

이 네비게이션 컨트롤러는 뷰를 2개 화면위에 표시하는데, (네비게이션 스택에서)가장 위에 있는 뷰를 보여주고 네비게이션이나 특정 역할을 담당하는 뷰를 함께 보여줘요. 그래서 다음과 같은 화면이 보여질 수 있는것이죠!

글 맨 위의 사진에서 가져온 네비게이션 뷰와 최상위 컨텐츠 뷰의 예시

찾아보니 상단에 나타나는 것이 네비게이션 뷰, 하단에 나타나는 것이 탭바 뷰로 서로 다른 것이였네요. 글 수정했습니다.

네비게이션 스택은 뭘까

간단하게 말하자면, 화면을 스택구조로 담아놓은 것이라 볼 수 있겠네요. 여기에서도 Push와 Pop의 기능은 스택의 First-In-Last-Out 특성을 따라 똑같이 작용합니다. 각자의 뷰 컨트롤러들이 자신이 나타낼 화면을 가지고있고, 스택의 맨 위에 있으면 화면에 그 정보를 보여줄 수 있는거죠. 여기에서 가장 아래에 있어서 빠져나오지 못하는 (Pop될 수 없는) 특별한 뷰 컨트롤러를 '루트 뷰 컨트롤러'라고 말합니다.

UINavigationController 클래스에 있는 메서드를 활용하거나 세그(segue)를 이용해 네비게이션 스택에 뷰 컨트롤러를 push / pop 할 수 있어요. 또, 네비게이션 인터페이스에 있는 뒤로가기나 제스쳐를 이용해 맨 위의 뷰 컨트롤러를 pop하여 뒤에 있는 컨텐츠를 보여줄 수도 있습니다.

segue(세그웨이)는 코드로 작성하여 뷰를 관리하는 방식이 아니라, Storyboard 상에서 push / replace / modal / popover 등의 옵션으로 뷰를 관리하는 것으로 보이네요. 후에 사용할 기회가 있으면, 또는 유용하다면 그에 대한 내용을 포스팅할게요!

네비게이션 컨트롤러와 관련된 메서드

UINavigationController에서 네비게이션 컨트롤러와 스택의 메서드들을 확인할 수 있습니다. 메서드 시그니처에서 함수의 이름, 인자의 별명을 통해 어떤 역할을 하는 메서드인지 쉽게 파악할 수 있어서 사용에 있어서 큰 무리는 없어보이네요 ㅋㅋㅋ.

UINavigationController에 포함되어있는 메서드들. 직관적인 이름이라서 쉽게 역할을 파악할 수 있을 것 같아요

네비게이션 바

네비게이션 바는 항상 해당 네비게이션 컨트롤러의 영향을 받는, 관리를 받는 뷰의 상단에 보여집니다. 만약에 스택 맨 위에 있는 뷰 컨트롤러가 변경되면, 네비게이션 바 역시 컨트롤러가 계속해서 업데이트를 시켜줍니다. 이 네비게이션 바는 타이틀과 아이템으로 구성되어 있고, 각 뷰에 맞게 네비게이션 타이틀과 아이템이 맞추어져있기에 이들을 담는 스택도 함께 만들어져있습니다. 단, 주의할 점은 여러 개의 네비게이션 바가 스택에 담기는 것이 아니라, 하나의 네비게이션 바스택에 담겨있던 아이템들을 이용해 나타낸다는 점입니다.

이렇게 구성되어 있습니다.

320x100
Share Link
reply
반응형
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31