처음부터 차근차근

TableView 본문

프로그래밍/Swift

TableView

_soyoung 2022. 5. 13. 20:13
반응형

TableView

항목을 표로 보여주는 뷰이다.

 

TableView 구성요소

TableView : TableViewCell 여러개 담기 위한 컨테이너

TableViewCell : 하나의 아이템

 

UIViewController    VS    UITableViewController

UIViewController은 UIViewTableViewController의 수퍼클래스이다.

 

UITableViewController의 계층도 : UIViewController - UITableViewController

UITableView의 계층도 : UIView - UIScrollView - UITableView

UITableViewCell의 계층도 : UIView - UITableViewCell

 

 

TableView 사용하는 방법

1. 스토리보드로 가서 view controller에다 Table view 컨트롤 추가

 

 

2. Add New Constraints : Table View를 화면 전체를 채움

 

 

3. Assistant에 TableView outlet 설정 (이름 table로함)

 

 

4. UITableViewDelegate와 UITableViewDataSource 채택하고 필수 메서드 준수

UITableViewDataSource의 필수 메서드임

// 행 개수 설정하는 함수
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
	return items.count
}


// 설정한 섹션과 행에 데이터를 표현해주는 함수
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath)// cell 설정
    cell.textLabel?.text = indexPath.description
    return cell
}

 

tableView(_:cellForRowAt:) 설명

  • 테이블 뷰를 초기화하면 데이터소스(datasource)의 tableView(_:cellForRowAt:) 메서드에 셀 객체의 index path를 전달하면서 호출
  • 그러면 이 메서드는 테이블 뷰 객체의 dequeueReusableCell 메서드를 호출하면서 인덱스 패스와 그 셀 클래스가 등록될 때 할당된 cell ID를 전달하여, 새로운 셀을 위해 사용될 수 있는 재사용 가능한 셀 객체가 큐(queue)에 있는지를 알아 봄
  • UITableViewCell형으로 리턴함

이 함수는 얼마나 자주 호출되는가? 

스크롤 내리고 올릴 때마다 처음 로드될 때 등 셀 로드해야할 때 계속해서 호출한다.

 

 

table view에서 섹션과 행,셀 개념

섹션, 행, 셀

 

5. viewDidLoad함수에다 소스 추가

override func viewDidLoad() {
    super.viewDidLoad()
    table.delegate = self
    table.dataSource = self
}

 

 

6. 섹션 개수 설정하는 함수 추가

override func numberOfSections(in tableView: UITableView) -> Int {
        return arr.count
}

 

 

7. Table View Cell 추가

 

 

8. cell의 Indentifier 변경

 

 

9. cell을 관리할 MyTableViewCell 클래스 생성하고 table view cell과 연결

 

 

10. Label만들어서 MyTableViewCell 클래스 안에 outlet 변수로 만들기

11. cell 클릭시 실행할 함수 추가

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print("click: \(arr[indexPath.section][indexPath.row])")
}

 

 

형변환 

다운 캐스팅 : as! as?        ex) 부모인스턴스 as? 자식클래스

업캐스팅 : as     ex) 자식인스턴스 as 부모클래스

 

 

 

출처 : iOS프로그래밍실무(22-1학기)한성현교수 강의 내용 변형 및 요약

반응형

'프로그래밍 > Swift' 카테고리의 다른 글

OpenAPI 사용해서 앱만들기  (0) 2022.05.19
RESTful과 OpenAPI  (0) 2022.05.16
Swift 용어 정리  (0) 2022.05.09
간단한 앱 만들기 실습  (0) 2022.04.16
Swift 문법 복습5  (0) 2022.04.11
Comments