๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS

[UIKit] UITableView

by hyebin (Helia) 2022. 4. 1.
๋ฐ˜์‘ํ˜•

UITableView

@MainActor protocol UITableViewDataSource

ํ…Œ์ด๋ธ” ๋ทฐ๋Š” ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ์ด๋ฉฐ, UIScrollView๋ฅผ ์ƒ์†๋ฐ›์•„ ์ˆ˜์ง ์Šคํฌ๋กค์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ”์˜ ๊ฐœ๋ณ„ ํ•ญ๋ชฉ์„ ๊ตฌ์„ฑํ•˜๋Š” ์…€์„ UITableViewCell ๊ฐ์ฒด์ด๋ฉฐ, ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”์— ํ–‰์„ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ” ๋ทฐ๋Š” ๊ฐ๊ฐ ์ž์ฒด ํ–‰์ด ์žˆ๋Š” 0๊ฐœ ์ด์ƒ์˜ ์„น์…˜์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ์„น์…˜์€ ํ…Œ์ด๋ธ” ๋ทฐ ๋‚ด์—์„œ, ํ–‰์€ ์„น์…˜ ๋‚ด์—์„œ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋กœ ์‹๋ณ„๋ฉ๋‹ˆ๋‹ค.

์›ํ•˜๋Š” ์„น์…˜ ์•ž์— ์„น์…˜ Header๋ฅผ ๋ถ™์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„ ํƒ์ ์œผ๋กœ ์„น์…˜ Footer๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

UITableViewCell

@MainActor class UITableViewCell : UIView

UITableViewCell ๊ฐ์ฒด๋Š” ๋‹จ์ผ ํ…Œ์ด๋ธ” ํ–‰์˜ ๋‚ด์šฉ์„ ๊ด€๋ฆฌํ•˜๋Š” ํŠน์ˆ˜ํ•œ ๋ทฐ ์œ ํ˜•์ž…๋‹ˆ๋‹ค.

์ฃผ๋กœ ์…€์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์˜ ์‚ฌ์šฉ์ž ์ง€์ • ์ฝ˜ํ…์ธ ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ํ‘œ์‹œํ•˜์ง€๋งŒ UITableViewCell์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ…Œ์ด๋ธ” ๊ด€๋ จ ๋™์ž‘์„ ์ง€์›ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ํŠน์ • ์‚ฌ์šฉ์ž ์ง€์ • ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ์…€์— ์„ ํƒ ๋˜๋Š” ๊ฐ•์กฐ ์ƒ‰์ƒ ์ ์šฉ
  • ์ƒ์„ธ ๋˜๋Š” ๊ณต๊ฐœ ์ œ์–ด์™€ ๊ฐ™์€ ํ‘œ์ค€ accessory view ์ถ”๊ฐ€
  • ์…€์„ ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ๋งŒ๋“ฌ
  • ์…€์˜ ๋‚ด์šฉ์„ ๋“ค์—ฌ์“ฐ๊ธฐ ํ•˜์—ฌ ํ‘œ์— ์‹œ๊ฐ์  ๊ณ„์ธต ์ž‘์„ฑ

์•ฑ์˜ ์ปจํ…์ธ  ์˜์—ญ์ด ์…€์˜ ๋Œ€๋ถ€๋ถ„์„ ์ฐจ์ง€ํ•˜์ง€๋งŒ, ์…€์€ ๋‹ค๋ฅธ ์ปจํ…์ธ ๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ๊ณต๊ฐ„์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์…€์€ ์ปจํ…์ธ  ์˜์—ญ์˜ ๋’ค์— accesory view๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ”์„ ํŽธ์ง‘ ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•˜๋ฉด, ์…€์€ ์ปจํ…์ธ  ์˜์—ญ์˜ ๋งจ์•ž์— delete control์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์„ ํƒ์ ์œผ๋กœ reordered control ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์žฌ์ •๋ ฌ ์ปจํŠธ๋กค์„ ๋ˆŒ๋Ÿฌ ์…€์„ ๋“œ๋ž˜๊ทธํ•˜๋ฉด ์œ„ ์•„๋ž˜๋กœ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ์…€์˜ ์ปจํ…์ธ ์™€ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ”์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•˜๋‚˜์˜ ์…€ ์œ ํ˜•์ด ์žˆ์ง€๋งŒ ํ…Œ์ด๋ธ”์˜ ์…€ ์†์„ฑ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์…€ ์œ ํ˜•์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Identifier: ์ด ์‹๋ณ„์ž( ์žฌ์‚ฌ์šฉ ์‹๋ณ„์ž๋ผ๊ณ ๋„ ํ•จ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์…€ ์ƒ์„ฑ
  • Style: ํ‘œ์ค€ ์œ ํ˜• ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์ปค์Šคํ…€ ์…€์„ ์ •์˜
  • Class: ์ปค์Šคํ…€ ๋™์ž‘์„ ์‚ฌ์šฉํ•˜์—ฌ UITableCell ํ•˜์œ„ ํด๋ž˜์Šค ์ง€์ •

 

UITableViewController

@MainActor class UITableViewController : UIViewController

์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ…Œ์ด๋ธ”๋ทฐ๋กœ ๊ตฌ์„ฑ๋˜๊ณ  ๋‹ค๋ฅธ ์ปจํ…์ธ ๊ฐ€ ๊ฑฐ์˜ ๋˜๋Š” ์ „ํ˜€ ์—†๋Š” ๊ฒฝ์šฐ ํ•˜์œ„ ํด๋ž˜์Šค ์ž…๋‹ˆ๋‹ค.

Table View Controller๋Š” ํ…Œ์ด๋ธ” ๋ทฐ์˜ ์ปจํ…์ธ ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋ณ€๊ฒฝ์— ๋Œ€์‘ํ•˜๋Š”๋ฐ ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋‹ค์Œ ๋™์ž‘์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

  • ์Šคํ† ๋ฆฌ ๋ณด๋“œ ๋˜๋Š” Nib ํŒŒ์ผ์— ๋ณด๊ด€๋œ ํ…Œ์ด๋ธ” ๋ทฐ๋ฅผ ์ž๋™์„ ๋กœ๋“œ ํ•ฉ๋‹ˆ๋‹ค. tabel View ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ” ๋ทฐ์— ์—‘์„ธ์Šค ํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ด๋ธ” ๋ทฐ์˜ data source์™€ delegate๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • viewVillApear(_:) ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์ฒซ๋ฒˆ์งธ ํ‘œ์‹œ ํ…Œ์ด๋ธ” ๋ทฐ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ 

 

๋ฐ˜์‘ํ˜•

'๐ŸŽ iOS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

UIImageView  (0) 2022.09.28
Outlet ๋ณ€์ˆ˜์™€ Action ํ•จ์ˆ˜  (0) 2022.09.27
[UIKit] UIView(3)  (0) 2022.03.30
[UIKit] UIView(2)  (0) 2022.03.28
[UIKit] UIView(1)  (0) 2022.03.25