TableView λ₯Ό μν Protocol
UITableView λ₯Ό μν Protocol μ UITableViewDataSource, UITableViewDelegate κ° μλ€. μ¬κΈ°μ Protocol μ TableViewλ₯Ό μ΄μ©νκΈ° μν΄ ν΄μΌν μΌλ€μ λͺ©λ‘, μ¦ κ΅¬νν΄μΌν method λ€μ΄λ€.
protocol μ€μλ ν΄λμ€κ° μμμ νλ―μ΄ μμ±ν΄μ£Όλ©΄ λλ€. UITableViewDataSource protocol μ κ²½μ°, νμ ꡬν ν¨μλ₯Ό μΆκ°νμ§ μμΌλ©΄, μλμ κ°μ μλ¬κ° λ°μνλ€. Fix λ₯Ό λλ₯΄λ©΄ μλμΌλ‘ μΆκ°ν΄μ€λ€.
extension BountyViewController: UITableViewDataSource {
}
UITableViewDataSource
protocol UITableViewDataSource
π‘ The methods adopted by the object you use to manage data and provide cells for a table view.
Table view data source object λ ν΄λΉ νλ‘ν μ½μ μ±ννλ€. Table view λ λ°μ΄ν° κΈ°λ°μ΄κ³ , μΌλ°μ μΌλ‘ μ 곡λ data source object λ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μ»λλ€. data source object λ μ±μ λ°μ΄ν°λ₯Ό κ΄λ¦¬νκ³ , table μ cell μ μμ±νκ³ κ΄λ¦¬ν μ± μμ κ°λλ€.
Data source object μ μ± μμ λ€μκ³Ό κ°λ€.
- table μ section κ³Ό row μ κ°μλ₯Ό μλ €μ£Όλ κ²
- table μ κ° row μ cell μ μ 곡νλ κ²
- section header μ footer μ title μ μ 곡νλ κ²
- table μ index λ₯Ό μ€μ νλ κ²
- κΈ°λ³Έ λ°μ΄ν°λ₯Ό λ³κ²½ν΄μΌ νλ user λλ table μ΄κΈ° μ λ°μ΄νΈμ μλ΅νλ κ²
TableView λ₯Ό μ΄μ©νκΈ° μν΄μ νμλ‘ κ΅¬νν΄μΌ νλ method κ° μλ€. TableView μ cell μ΄ λͺκ°μΈμ§? Table view λ₯Ό μ΄λ»κ² 보μ¬μ€ κ²μΈμ§? μ λν μ§λ¬Έμ΄λ€. ν΄λΉ μ§λ¬Έμ λ€μ method λ₯Ό ꡬνν¨μΌλ‘ λ΅λ³ν μ μλ€.
1. tableView(_:numberOfRowsInSection:)
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
- νΉμ section μ νμν row μ κ°μλ₯Ό 묻λ method
- return κ°μΌλ‘ λͺ κ°μ μ μ 보μ¬μ€μ§μ λν λ΅λ³μ ꡬννλ©΄ λλ€.
- section μ λ°λΌ λ€λ₯Έ μ μ κ°μλ₯Ό λ°ννλλ‘ κ΅¬νν μ μλ€.
2. tableView(_:cellForRowAt:)
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
- νΉμ μμΉμ νμν cell μ μμ²νλ method
- cell μ μμ±ν λ, custom cell μ μ¬μ¬μ©νλ €λ©΄ dequeueReusableCell(withIdentifier:for:) method λ₯Ό μ΄μ©νλ€.
- cell μ λ§λ νμ, data κ°λ€μ ν΅ν΄ cell μ μμ±λ€μ μ λ°μ΄νΈν μ μλ€.
- return κ°μΌλ‘ UITableViewCell μ μμλ°μ object λ₯Ό λ°νν΄μΌ νλ€. (nil λ°νμ μλ¬ λ°μ)
UITableViewDelegate
protocol UITableViewDelegate
π‘Methods for managing selections, configuring section headers and footers, deleting and reordering cells, and performing other actions in a table view.
Table view delegate objectλ ν΄λΉ νλ‘ν μ½μ μ±ννλ€. Table view λ΄μ ν΄λ¦λ μ μ 맀λμ§νκ±°λ, μΉμ μ headerμ footer μ€μ , μ μ μμ νκ±°λ μ¬μ‘λ΄νκΈ° μν΄ μ΄μ©νλ€.
ν΄λΉ νλ‘ν μ½μ method λ€μ λ€μ κΈ°λ₯λ€μ μ 곡νλ€.
- custom header μ footer view λ₯Ό λ§λ€κ³ κ΄λ¦¬νλ κ²
- row, header, footer μ λμ΄λ₯Ό μ§μ νλ κ²
- λ λμ μ€ν¬λ‘€ μ§μμ μν΄ λμ΄μ μΆμ μΉλ₯Ό μ 곡νλ κ²
- row μ λ€μ¬μ°κΈ° μμ€μ μ§μ νλ κ²
- μ νλ row μ λν΄ μλ΅νλ κ²
- table row λ₯Ό μ€μμ΄ννλ λ± μ‘μ μ μλ΅νλ κ²
- table content λ₯Ό νΈμ§ν μ μλλ‘ μ§μνλ κ²
UITableViewDelegate νλ‘ν μ½μ νμ ꡬν method κ° μλ€. λ€μμ μ£Όλ‘ μμ±νλ method μ΄λ€.
tableView(_didSelectRowAt:)
optional func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
- delegate (λ리μΈ)μκ² rowκ° μ νλμμμ μλ €μ£Όλ ν¨μ.
- μ μ μ ννμ λ μ΄λ»κ² ν μ§μ λν΄ κ΅¬νν μ μλ ν¨μμ΄λ€.
- μμλ‘, TableView κ° List page μ΄κ³ Detail page κ° μλ€λ©΄ ν΄λΉ method μμ performSegue λ₯Ό νΈμΆν΄ Detail page λ‘ λμ΄κ°λ μ½λλ₯Ό μμ±ν μ μλ€.
extension ListViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("--> \(indexPath.row)")
performSegue(withIdentifier: "showDetail", sender: indexPath.row)
}
}
곡μ λ¬Έμ
- Apple Developer Documentation - UITableViewDataSource
- Apple Developer Documentation - UITableViewDelegate
μ°Έκ³ λ¬Έμ
- woonhyeong.tistory.com/6?category=827228 > Datasource, Delegate method κ° μ μ 리λμ΄ μλ€.
'π iOS > UIKit' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[iOS/Swift] μ¨λ³΄λ©(Onboarding) νμ΄μ§ λ§λ€κΈ° - Storyboard, UserDefaults, SceneDelegate (0) | 2021.03.08 |
---|---|
[iOS/Swift] TableView λ‘ μ΄κ°λ¨ TodoList λ§λ€κΈ° (2) | 2021.03.01 |
[iOS/Swift] TableView μ κΈ°μ΄ :: UITableView, UITableViewCell (0) | 2021.03.01 |
[iOS/Swift] Launch Screen :: μ±μ μμ νλ©΄ (0) | 2021.02.21 |
[iOS/Swift] Tab Bar - UITabBar, UITabBarController (4) | 2021.02.14 |