본문 바로가기

Dev.iOS/About

[iOS_Intro] 3. 테이블, 뷰


Chapter 3.  테이블, 뷰
계층 데이터
일반적으로 데이터는 부모-자식 관계, 즉 고수준 데이터와 상세 데이터로 구성될 때가 많다. 이런 데이터를 계층 데이터라고 부르며 이를 테이블 뷰와 상세 뷰를 나누어 해결할 수 있다. 각 뷰를 어떻게 활용할 지는 사용자에게 전달하려는 것이 무엇인가? 사용자는 뷰와 어떻게 상호작용할 것인가 이 두 가지를 생각하여 결정해야한다. 하나의 함수가 하나의 역할만 하도록 함수를 설계하듯이 한 화면에서는 한 번에 한 태스크만 집중할 수 있도록 뷰를 설계하는 것이 좋다. 각 뷰는 특별한 목적이 있어야 하며, 필요한 정보를 사용자가 쉽게 이해하고, 사용할 수 있도록 뷰를 설계해야 하는 것이다.

이러한 각각의 규칙을 애플에서 제정해놓은 문서가 있는데, 그것이 HIG ( Human Interface Guideline ) 이다. 이 문서에서는 앱 상호작용 패턴과 관련한 모범사례 및 앱스토어 가이드라인을 제공한다. 개발을 할 때, 특별한 이유가 없다면 iOS 방식을 따르는 것이 좋다. 이것은 사용자에게 일관적인 경험을 유지되게 제공할 수 있을 뿐만 아니라 개발자 입장에서는 애플 검토자가 우리의 앱을 검토하고 승인하는데 걸리는 시간도 단축할 수 있기 때문이다. 앱만의 독창성은 앱의 고유한 기능에서 시도하는 것이 좋다.


내비게이션 컨트롤러
몇 가지 기능이 이미 내장되어 있다.
뒤로 가기 버튼, 타이틀 바, 뷰 히스토리, 뷰 크기 변경 기능, 뷰 스택 관리 등을 내비케이션 컨트롤러가 처리한다.
즉, 개발자가 직접 구현할 필요가 없다.

Master-Detail Application
화살표는 뷰의 전환을 의미하며 segues(세그웨이, 부드럽게 전환한다)라고 부른다.


데이터 접근 객체로 저수준 데이터 접근 숨기기
클래스 인스턴스와 주고받는 데이터 작업을 숨기기 위해 클래스를 이용한다. 이 클래스를 데이터 접근 객체(DAO)라고 한다. 이 DAO를 이용하여 데이터 접근을 캡슐화 할 수 있다. DAO에는 두 명의 고객이 있다고 할 수 있다. 하나는 앨범 정보를 가져오거나 저장하려는 외부인이고, 다른 하나는 DAO를 구현하는 내부인으로 실제로 어디에, 어떤 데이터를 저장할지 결정한다. 따라서 공개 인터페이스와 비공개 인터페이스 두 가지 인터페이스가 필요하다. 공개 인터페이스는 헤더 파일에서 @interface 키워드를 통해 생성하고 비공개 인터페이스는 구현 파일에서 @interface 키워드를 통해 생성한다.


세그웨이(Segue)

스토리보드에서는 세그웨이로 뷰 전환 방법을 정의한다. iOS 6에서 세그웨이를 지원하기 시작했으며, 전환 과정을 다양하게 설정할 수 있다. 엄밀하게 말하자면 세그웨이는 뷰가 아니라 씬(Scene)을 전환시킨다. 아이폰에서는 씬이 항상 뷰이다. 커스텀 세그웨이를 만들 수도 있으며 앱에서 씬 전환을 원하면 iOS가 세그웨이를 만든다. 세그웨이의 씬 전환은 세그웨이가 제공하는 기능의 일부일 뿐이다. iOS에서는 세그웨이를 프로그래밍적으로 커스터마이즈할 수 있도록 두 가지 메서드를 제공한다. prepareForSegure, performSegueWithIndentifier 이 두 가지이다. 보통은 세그웨이를 알아서 처리하지만 다양한 뷰 전환 경로를 갖는 경우 직접 세그웨이를 설정해야 한다. performSegueWithIdentifier에서는 문자열 식별자를 이용하여 모든 세그웨이에 접근할 수 있다. 

Chapter 3. end