UItablaviewDelegate를 한번 살펴보았다.
이전에 작업하던 내용을 잠시 살펴보면
import UIKit
class MyTableViewController: UIViewController {
@IBOutlet weak var myTableView: UITableView!
let cellData = ["Hello Noel", "두 번째 셀이다.", "세 번째 셀이다."]
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .brown
configureTableView()
}
func configureTableView() {
myTableView.backgroundColor = .green
myTableView.delegate = self
myTableView.dataSource = self
}
}
extension MyTableViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return cellData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath)
cell.textLabel?.text = cellData[indexPath.row]
return cell
}
}
extension MyTableViewController: UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 3
}
}
UITableViewDelegate와 UITableViewDataSource
이 두개를 커맨드 + 선택을 해서 코드를 잠시 살펴보았다.
이걸 왜 살펴보는 것인가? 라는 의문점이 들 수 있겠지만,
답은 굉장히 심플하다.
"뭐가 있는줄 알아야 할 수 있는것을 정할 수 있기 때문이다."
"모든 코드에는 이유가 필요하기 때문이다" 라고 정의할 수 있다.

으음.. numberOfRows InSection section 이건 이미 구현을 했지만,
어떻게 보면 TableView를 사용하지 않고
그냥 Stack View로 쌓아도 되는것 아니었나?
왜 굳이 TableView를 따로 쓰는 것인가?
하는 의문점이 조금 들었던 부분인데,
그러면...
TableView와 Stack View의 차이점은 무엇인지?
알 필요성이 있다는 것이다.
이 차이점을 알아야
TableView를 쓸것인지 Stack View를 쓸것인지
결정을 내릴 수 있는것이다.
Table View의 특징이라고 한다면,
각각의 셀을 다시사용할 준비를 해야하는 것인데,
이전에 구현한 코드를 실행해보면은
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath)
cell.textLabel?.text = cellData[indexPath.row]
return cell
}

각각의 셀을 Table View에 넣을 수 있는데
이럴 거면 스택뷰가 낫다고 본다.
Table View를 써야한다면 형태는 그대로
내용만 다르게 적용되는 목적이 필요한 경우이다.
그래서 어떤것이든 기획이라는것이 존재하고,
목적과 필요성을 따질 필요가 있는것이다.
DataSource의 경우는 조금 더 데이터적인 것들
조금 더 그리는 것에 대한 연관이 많기 때문에
이름을 잘 보아야 한다

보면 titleForHeaderInSection 라는
파라미터를 잘 보아야한다는 것이다.
어떤 느낌이냐면
Header 섹션에 타이틀 Footer섹션에 타이틀을 넣으려면
위와 같이 넣어야 한다는 거다.
요즘엔 GPT가 너무 좋아서 가끔 모르는게 있으면,
그냥 GPT에 간단하게 이 코드는 뭔지 물어보고는 한다.
나보다 더 정확하다.. ㅋㅋ
많이 애용하는것을 적극추천하겠다..
이처럼 DataSource는 조금 더 그리는 것에 취중된 반면,
Delegate의 경우 조금 더 액션에 취중된 느낌이다.

보면, willDisplay cell~ 만약에 이 셀이 보여지기 바로 직전에
실행할 무언가의 대한 액션에 대한 코드를 볼 수 있다.
보면 will, did 어떠한 시점이
정확하게 명시된 코드를 볼 수 있는것이다.
이처럼 시도 해 볼 수 있는 코드들은
시도해보는게 좋다.
그리고 새로운 기능을 구현할 때에는
이름 짓는 것들도 반드시 확인하면 좋은 점은
같이 일하게 되는 사람들이 읽기가
편할 것이라는 장점이 있으니 유의하면 좋다.
많은 컴포넌트들이
Delegate와 DataSource를 가지고 있을 텐데
해당하는 컴포넌트들에 Delegate와 DataSource를
잘 살펴보고 어떻게 쓰는지 등등 살펴보면 될것으로 보인다.
스위프트UI와는 다르게 UIkit은 어떤것을 할 수 있는지
보고 작업을 해야하는 부분이 있다는 점을 기억해두자.
'IOS > Swift-TIL' 카테고리의 다른 글
| [Swift-TIL] TabBarController 알아보기 (2) | 2025.08.06 |
|---|---|
| [Swift-TIL] 간단하게 NavigationController 알아보기 (3) | 2025.08.06 |
| [Swift-TIL] Delegate랑 친해져 보기 (0) | 2024.12.24 |
| [Swift-TIL] 테이블 뷰로 화면 그려보기 (0) | 2024.12.22 |
| [Swift-TIL] 간단하게 UIKit으로 화면 만들어보기 (0) | 2024.11.30 |