본문 바로가기

Codes Travel/iOS Boost Course #2019

UITableView ( 테이블 뷰 )?

안녕하세요 :)

iOS 개발자 리치(rich_iosdev)입니다.


공유해드릴 내용은 UITableView 입니다.

UITableView?

A view that presents data using rows arranged in a single column.

하나의 열에 여러 행을 사용해서 데이터를 보여주는 뷰.

테이블 뷰는 iOS 어플리케이션에 많이 사용되는 뷰이며, 리스트 형태로 스크롤이 가능한 특징이 있습니다.

 

#1 테이블 뷰 스타일

 

테이블 뷰는 일반, 그룹 2가지 스타일이 있습니다.

 

  • 일반: A single long list of rows
  • 그룹: group related rows into sections

좌측 '일반' 스타일 / 우측 '그룹' 스타일

 

#2 테이블 뷰 타입

 

테이블 뷰 생성시 다음 2가지 타입으로 생성이 가능합니다.

 

  • 동적 프로토타입(Dynamic Prototypes)
    • 셀 하나를 디자인해 이를 다른 셀의 템플릿으로 사용하는 방식
    • 같은 레이아웃의 셀을 여러 개 이용해 정보를 표시할 경우
    • 데이터 소스(UITableViewDataSource) 인스턴스에 의해 콘텐츠를 관리하며, 셀의 개수가 상황에 따라 변하는 경우에 사용
  • 정적 셀(Static Cells)
    • 고유의 레이아웃과 고정된 수의 행을 가지는 테이블뷰에 사용
    • 테이블뷰를 디자인하는 시점에 테이블의 형태와 셀의 개수가 정해져 있는 경우 사용
    • 셀의 개수가 변하지 않음

주로 사용하는 타입은 레이아웃은 같지만 여러 데이터를 보여주기 위해서 사용되는 동적 프로토타입(Dynamic Prototypes)입니다. 정적 셀(Static Cells)의 경우에는 고정된 셀 타입이기 때문에 셀의 갯수와 데이터의 동적 변화가 없는 경우 활용 가능합니다.

 

#3 샘플 코드

import UIKit

class TableViewSample: UITableViewController {
    
    fileprivate let cellId = "cellId"
    
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellId)
    }
}

extension TableViewSample {
    
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
    }
    
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath)
        cell.textLabel?.text = "테이블 뷰를 만들었습니다"
        return cell
    }
}

extension TableViewSample {
    
    override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 80
    }
    
}

UITableViewController로 만든 TableView 샘플 코드입니다.

아래 이미지는 시뮬레이터로 작동시킨 테이블 뷰 화면입니다.

 

 

포스팅 내용 중 잘못된 내용이 있다면 댓글 부탁드립니다!

확인해서 수정하도록 하겠습니다

 

끝까지 읽어주셔서 정말 감사합니다 :)

'Codes Travel > iOS Boost Course #2019' 카테고리의 다른 글

뷰의 재사용 이란?  (0) 2019.08.01
UITableViewCell (테이블 뷰 셀)?  (0) 2019.08.01
Gesture Recognizer란?  (0) 2019.07.24
Target-Action 디자인 패턴  (0) 2019.07.24
Singleton (싱글턴) 이란?  (0) 2019.07.24