iOS

[iOS] TableViewController - [1]

스벅 보안관 2024. 5. 24. 09:34

안녕하세요 스벅보안관입니다.

이번 시간에는 TableViewController에 대해 알아보려고 합니다.

TableViewController는 iOS 앱개발을 하면서 아마 거의 필수로 사용하는 것 같습니다.

개념과 중요한 요소들을 정리해보도록 하겠습니다!

 

TableViewController란?

TableViewController는 리스트 형태의 데이터를 화면에 표시하고, 사용자와 상호작용을 할 수 있게 해주는 ViewController의 한 종류입니다. iOS 개발에서 매우 자주 사용되며, 연락처 앱이나 설정 앱 등 다양한 애플리케이션에서 활용되고 있습니다.

 

TableViewController의 구조

TableViewController는 기본적으로 UITableView와 UITableViewDelegate, UITableViewDataSource 프로토콜을 사용하여 데이터를 관리하고 표시합니다. TableView는 섹션과 행으로 구성되며, 각 행에는 데이터를 표시하는 셀(cell)이 있습니다.

 

1. TableViewController 생성

먼저, Xcode에서 새로운 프로젝트를 생성하고, TableViewController를 추가합니다. Interface Builder를 사용하여 스토리보드에 TableViewController를 드래그하여 추가할 수 있습니다.

 

2. UITableViewDelegate, UITableViewDataSource 프로토콜 채택

TableViewController 클래스에서 UITableViewDelegate와 UITableViewDataSource 프로토콜을 채택하고, 필수 메서드를 구현해야 합니다.

예제 코드는 다음과 같습니다.

class MyTableViewController: UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    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: "cell", for: indexPath)
        cell.textLabel?.text = items[indexPath.row]
        return cell
    }
}

 

numberOfSections는 테이블에 표시할 섹션의 수를 반환하고, numberOfRowsInSection은 각 섹션에 표시할 행의 수를 반환합니다. cellForRowAt은 각 행에 표시할 셀을 구성하여 반환합니다.

 

 

TableViewCell의 커스터마이징

TableViewCell은 기본적으로 제공되는 스타일 외에도 커스터마이징할 수 있습니다. 예를 들어, 이미지와 텍스트를 함께 표시하거나, 셀의 배경색을 변경하는 등의 작업이 가능합니다.

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CustomTableViewCell
    cell.customImageView.image = UIImage(named: "exampleImage")
    cell.customLabel.text = items[indexPath.row]
    return cell
}

 

TableViewCell 선택 시 동작 구현

셀 선택 시 동작을 정의하는 것은 didSelectRowAt을 활용하면 가능합니다!

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print("Selected row: \(indexPath.row)")
}

 

 

오늘의 결론

TableViewController는 iOS 개발에서 리스트 형태의 데이터를 관리하고 표시하는데 엄청나게 중요하기에 완벽하게 이해해야하는 기능입니다.

 

메모 : 어정쩡하게 말고 확실하고 완벽하게 이해하고 사용하기,,,