View
[iOS 앱 개발 - Swift] 테이블 뷰의 데이터소스와 델리게이트
Table View
테이블 뷰는 그 자체가 UITableView
클래스의 인스턴스이죠. 이 테이블 뷰를 마음에 드는 형태로 만들기 위해 행의 높이, 헤더 등의 여러 설정을 정해줄 수 있습니다. 또는 현재 선택한, 또는 특정한 행이나 셀에 접근할 수 있도록 합니다. UITalbeView
의 메서드를 호출해서 선택지를 수정하거나, 행이나 섹션의 삽입/삭제를 실행할 수도 있습니다.
UITableView
클래스는 UIScrollView
클래스를 상속하고 있어서, 화면보다 긴 내용을 '세로로만 가능한 스크롤'을 통해 확인할 수도 있습니다.
Table View Controller
UITableViewController
클래스는 표준 테이블 뷰의 여러 기능을 제공합니다. 행 수정, 설정, 선택지에 대한 관리 등의 역할을 수행할 수 있습니다. 이러한 기능을 통해 작성해야 할 코드의 양을 줄일 수 있습니다. 이 클래스를 직접적으로 사용하기 보다는 하위클래스(상속받는 자식)를 만들어 원하는 대로 수정할 때 주로 사용됩니다.
Data Source and Delegate
UITableView
객체는 무조건 델리게이트와 데이터소스를 가져야 합니다. MVC모델(Model - View - Controller)에 따라서, 데이터소스가 앱의 데이터모델과 뷰 사이에서 정보를 제공하는 역할을 합니다. 반면 델리게이트는 테이블 뷰의 형태와 기능을 관리하는 역할을 합니다. 많은 경우 델리게이트와 데이터소스는 같은 객체이며, UITableViewController
의 하위클래스입니다. (해당 클래스를 상속하여 제공되는 코드를 내 입맛에 맞게 수정하여 사용)
· Data Source
데이터 소스는 앞서 말했듯이, 테이블 뷰를 생성하고 수정할 때 필요한 정보들을 제공합니다. (외형의 형성을 위한 필수적인 최소한의 데이터만을 제공) 데이터 소스는 UITableViewDataSource
프로토콜을 따르게 됩니다. 이 프로토콜은 두 개의 메서드를 필요로 하는데, 각 섹션에서 몇 개의 행을 보여줄 지를 결정하는 numberOfRowsInSection:
과 각 행에서 어떤 정보를 보여줄 지를 제공하는 cellForRowAtIndexPath:
두 개의 메서드를 필요로 합니다. 이 둘 외에도 헤더, 푸터, 행의 삽입/삭제 등에 관련된 메서드를 선택적으로 골라 사용이 가능합니다.
[Data Source] https://developer.apple.com/documentation/uikit/uitableviewdatasource
· Delegate
델리게이트는 UITableViewDelegate
프로토콜을 채택합니다. 이 프로토콜은 필수로 요구하는 메서드는 없지만, 선택해서 사용할 수 있는 다양한 테이블 뷰의 외형에 대한 설정을 하는 메서드를 가지고 있습니다. 테이블 뷰의 섹션, 액세서리뷰, 각각의 행에 대한 수정, 편집모드의 접근제어 등을 할 수 있습니다.
[Delegate] https://developer.apple.com/documentation/uikit/uitableviewdelegate
현재 Swift 포스팅은 edwith의 부스트코스 iOS 프로그래밍 강좌를 보면서 3번째 Chapter를 공부한 내용을 정리하는 중입니다.
코드리뷰를 제외한 모든 강의와 강의자료는 무료로 개방되어있고, 네이버 아이디로도 강의를 들을 수 있으니 iOS 프로그래밍, 아이폰 앱개발에 관심이 있으신 분은 아래 링크의 강의를 한 번 확인해보세요! 프로젝트로 직접 앱을 만들면서 공부할 수 있어 큰 도움이 되고 있습니다!
https://www.edwith.org/boostcourse-ios/notices/12898
'Develop > iOS 개발' 카테고리의 다른 글
[iOS 앱개발 - Swift] 테이블뷰에 동적으로 셀 추가하기 (0) | 2019.08.17 |
---|---|
[iOS 앱 개발 - Swift] Table View : 테이블 뷰 만들어보기 (0) | 2019.08.16 |
[iOS 앱 개발 - Swift] Table View : 테이블 뷰 (0) | 2019.08.14 |
[iOS 앱 개발 - Swift] ImageView가 터치에 반응하게 만들기 (0) | 2019.08.14 |
[iOS 앱 개발 - Swift] 코코아팟으로 이미지편집기 사용하기 (0) | 2019.08.14 |