과제 목표

  • 첫번 째 뷰에서 버튼클릭 시 두번 째 뷰로 넘어가기
  • 두번째 뷰에는 테이블뷰를 표시 (왼쪽에 이미지, 오른쪽에 제목, 설명)으로 구성된 커스텀셀로 구성
  • 두번째 뷰인 테이블뷰에서 셀을 선택시 세번째 뷰로 넘어가면서 그 정보를 이동
  • 세번째 뷰에는 이미지, 제목, 설명을 표시
  • 뒤로도 이동이 가능해야한다.

TableView

테이블뷰는 dataSource와 delegate가 없으면 아무것도 할 수 없는 클래스다. 특히 DataSource는 꼭 있어야한다. 이 두개 없이도 테이블뷰가 잘 동작하게하려면 완전히 정적인 테이블뷰로 만들면 된다.

테이블컨트롤러안에는 tableView라는 변수가 있는 데, 이 변수는 기본적으로 self.view를 반환하는 데, UITableView로 반환한다.

DataSource는 언제 사용해야할까 ?
정적이 아닌 동적 데이터가 있을 땐 항상 사용해야된다.

이 프로토콜(DataSource)에는 정말 중요한 3가지 메소드가 있다.

  1. 섹션을 몇개 만들 것인지.
  2. 각각의 섹션에 Row를 몇개 만들 것이지.
  3. UITableViewCell중 하나를 갖고 오는 것.

마지막 메소드를 조금 더 알아보자.

UITableViewCell을 UITableView에 다시 돌려주는 방법은 (특정 Row를 그려야 할 시점에) 메소드가 호출되어야 한다. cellForRowAt이라는 메소드인데, 이 메소드는 섹션과 로우가 합쳐진 IndexPath라는 놈을 받아서 UITableViewCell을 반환해준다. 이 메소드에서는 Row에 보여주려는 데이터를 모델에서 가져와야 한다.

스토리보드에서 Table View Controller로 만들어주고 CocoaTouchClass에서 TableViewController를 상속받는 컨트롤러를 만들어준다. 그리고 스토리보드에서 연결해주면 아래처럼 데이터소스와 델리게이트가 연결되어 있을 것이다. 스토리보드에서 연결을 안하고 소스로 할 수도 있다.
tableView.delegate = self 이런식으로

스토리보드에서 어떤 것을 선택하는 데 겹쳐 있는 것중에 하나를 택해야한다면, Shift+Control+Left Click을 하게 되면 어떤 것을 선택할 지 묻는 메뉴가 나온다.