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

[iOS/UI] UITableView๋ž€?

by Fomagran ๐Ÿ’ป 2020. 12. 16.
728x90
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค.

 

์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ ํ…Œ์ด๋ธ”๋ทฐ์ž…๋‹ˆ๋‹ค.

 

iOS ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ๊ฑฐ์˜ ํ•„์ˆ˜๋กœ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ํด๋ž˜์Šค์ด์ฃ .

 

๊ทธ๋™์•ˆ ์ œ๊ณต๋˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋Œ€์ถฉ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ์˜ค๋Š˜์€ ์ง„์งœ ํ•˜๋‚˜ํ•˜๋‚˜ ์„ธ์„ธํ•˜๊ฒŒ ๋ณด๋ฉด์„œ ์•Œ์•„๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

UITableView


 

๊ณต์‹ ๋ฌธ์„œ์—๋Š” "๋‹จ์ผ ์—ด์— ๋ฐฐ์—ด๋œ ํ–‰์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ทฐ" ๋ผ๊ณ  ๋˜์–ด์žˆ๋„ค์š”.

 

๋˜ํ•œ UIScrollView ์— ์ƒ์†๋ฐ›๊ณ  ์žˆ์œผ๋ฏ€๋กœ Scroll์ด ๋‹น์—ฐํžˆ ๊ฐ€๋Šฅํ•˜๊ณ  Scroll ๊ด€๋ จ๋œ ๋ฉ”์†Œ๋“œ๋“ค๋„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Data Source


๊ธฐ๋ณธ์ ์œผ๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์†Œ์Šค ๋ฉ”์†Œ๋“œ๋Š” numberOfSections ์™€ numberOfRowsInSection ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

numberOfSections ์€ ์„น์…˜์˜ ๊ฐœ์ˆ˜๋ฅผ numberOfRowsInSection ์€ ์„น์…˜์•ˆ์˜ ํ–‰์˜ ๊ฐฏ์ˆ˜๋ฅผ ์ •ํ•˜๋Š” ๋ฉ”์†Œ๋“œ ์ž…๋‹ˆ๋‹ค.

 

ํ–‰ ํ•˜๋‚˜ํ•˜๋‚˜๋Š” TableViewCell๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋Š”๋ฐ์š”. ์ด๊ฒƒ์€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ• ๊นŒ์š”?

 

๋ฐ”๋กœ cellForRowAt ์ด๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋กœ ํ–‰์„ ๊ตฌ์„ฑํ•  ํ…Œ์ด๋ธ”๋ทฐ์…€์„ ์ •ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ๋ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ๋‚˜๋ผ์™€ ๋„์‹œ๋ฅผ ๋„์šฐ๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋ฅผ ๋ณด์—ฌ๋“œ๋ฆด๊ฒŒ์š”~

 

๋จผ์ € ๊ฐ ๋‚˜๋ผ์™€ ๋„์‹œ ๊ทธ๋ฆฌ๊ณ  ๋„์‹œ๋“ค์„ ๋‹ด๋Š” ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ์„น์…˜์„ countries์˜ ๊ฐฏ์ˆ˜๋งŒํผ return ํ•ด์ค๋‹ˆ๋‹ค.

 

๊ฐ ํ–‰์˜ ๊ฐฏ์ˆ˜๋Š” ๋„์‹œ๋“ค ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๋„์‹œ์˜ ๊ฐฏ์ˆ˜๋งŒํผ return ํ•ด์ค๋‹ˆ๋‹ค.

 

ํƒ€์ดํ‹€์€ ๊ฐ ๋‚˜๋ผ์•ˆ์— ์žˆ๋Š” ์ด๋ฆ„์œผ๋กœ return ํ•ด์ค๋‹ˆ๋‹ค.

 

๊ฐ ํ–‰์˜ ์…€์€ ํ…Œ์ด๋ธ”๋ทฐ์…€์„ ๋งŒ๋“ค์–ด์ฃผ์‹  ๋’ค ๋„์‹œ ์ด๋ฆ„์„ ๋„์šธ Label๋กœ ๊ตฌ์„ฑํ•ด์ค๋‹ˆ๋‹ค.

๊ทธ ๋‹ค์Œ dequeueReusableCell ์„ ์ด์šฉํ•ด์„œ ์œ„์—์„œ ๋งŒ๋“ค์–ด์ฃผ์‹  TableViewCell ๋กœ ๊ตฌ์„ฑํ•ด์ค๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณค cell์•ˆ์— ์žˆ๋Š” label์€ cities์•ˆ์˜ ์„น์…˜์˜ ๊ฐ ๋„์‹œ ์ด๋ฆ„์œผ๋กœ ํ•ด์ค๋‹ˆ๋‹ค.

 

 

์—ฌ๊ธฐ์„œ dequeueReusableCell์ด๋ž€?

 

์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์…€์ด๋ž€ ๋œป์œผ๋กœ identifier๋ฅผ ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉํ•˜๋Š” ์…€์„ ์žฌ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์…€์˜ identifier๋Š” ์–ด๋””์„œ ์ •ํ•˜์ง€?

 

์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ์ด๋™ํ•˜์…”์„œ ํ…Œ์ด๋ธ”๋ทฐ์…€์„ ํƒญํ•˜๊ณ  identifier๋ฅผ ์ •ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋ชจ๋‘ ํ•˜๊ณ  ์‹คํ–‰์‹œ์ผœ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์„น์…˜์—๋Š” ๋‚˜๋ผ์ด๋ฆ„ ๊ทธ๋ฆฌ๊ณ  ์ด๋ฃจ์–ด์ง„ ํ–‰๋“ค์„ ๋„์‹œ๋“ค๋กœ ์ด๋ฃจ์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๋˜ํ•œ ํ—ค๋”๋ทฐ์™€ ํ‘ธํ„ฐ๋ทฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ ํ…Œ์ด๋ธ”๋ทฐ์˜ ๊ฐ ๋งจ ์œ„ ๋ถ€๋ถ„๊ณผ ๋งจ ์•„๋ž˜ ๋ถ€๋ถ„์„ ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋Š”๋ฐ์š”.

 

์•„๋ž˜์™€ ๊ฐ™์ด ์Šคํ† ๋ฆฌ๋ณด๋“œ์— headerView์™€ footerView๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์‹œ๊ณ 

 

ํ…Œ์ด๋ธ”๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์— ์—ฐ๊ฒฐํ•ด์ฃผ์‹  ๋’ค tableHeaderView๋ฅผ headerView๋กœ tableFooterView๋ฅผ footerView๋กœ ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํ—ค๋”๋ทฐ์™€ ํ‘ธํ„ฐ๋ทฐ๊ฐ€ ๋งจ ์œ„์™€ ์•„๋ž˜์— ๊ตฌ์„ฑ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

Height


๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ ํ–‰์˜ ํ—ค๋”,๋กœ์šฐ,ํ‘ธํ„ฐ์˜ ๋†’์ด๋Š” ์–ด๋–ป๊ฒŒ ์ •ํ• ๊นŒ์š”?

 

ํ—ค๋”๋Š” heightForHeaderInSection ๋ฉ”์†Œ๋“œ๋ฅผ

 

๋กœ์šฐ๋Š” heightForRowAt ๋ฉ”์†Œ๋“œ๋ฅผ

 

ํ‘ธํ„ฐ๋Š” heightForFooterInSection ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•ด์ฃผ์‹œ๋ฉด

๋กœ์šฐ๋ฅผ 100์œผ๋กœ ์ฃผ์–ด์„œ ํ™•์‹คํžˆ ์ปค์ง„๊ฒŒ ๋ณด์ด์‹œ๋‚˜์š”?

 

Delegate


๊ทธ๋ ‡๋‹ค๋ฉด ์ด์ œ ๊ฐ ํ–‰์˜ ์…€์„ ํƒญํ–ˆ์„ ๋•Œ๋‚˜ ์Šฌ๋ผ์ด๋“œ ๋“ฑ์„ ํ•˜๋Š” ๋”œ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ์‚ดํŽด๋ด…์‹œ๋‹ค.

 

๊ฐ€์žฅ ๋จผ์ € ๊ฐ ๋กœ์šฐ๋ฅผ ํƒญํ–ˆ์„ ๋•Œ๋Š” didSelectRowAt ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

cellForRow(at:) ๋ฉ”์†Œ๋“œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์…€์„ ์„ ํƒํ–ˆ์„ ๋•Œ ๋ฐฐ๊ฒฝ์ƒ‰์„ ๋ฐ”๊ฟ”๋ณด๋Š” ์˜ˆ์ œ๋ฅผ ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์„ ํƒ์„ ํ•ด์ œํ–ˆ์„ ๋•Œ์˜ ๋ฉ”์†Œ๋“œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ฐ”๋กœ didDeselectRowAt ๋ฉ”์†Œ๋“œ์ธ๋ฐ์š” ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ ํƒ์„ ํ•˜๋‚˜๋งŒ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ฐ”๋กœ ์•„๋ž˜์ฒ˜๋Ÿผ ๋ง์ด์ฃ .

 

๋˜ํ•œ ์™ผ์ชฝ์œผ๋กœ ์Šค์™€์ดํ”„ ํ–ˆ์„ ๋•Œ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์ด๋ธ”๋ทฐ๋ฅผ ๋งŽ์ด ๋ณด์…จ์„๊ฑฐ์—์š”.

 

๊ทธ๊ฑด ๋ฐ”๋กœ canEditRowAt ์™€ commit editingStyle: UITableViewCell.EditingStyle๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

๊ทธ๋Ÿฌ๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์Šค์™€์ดํ”„ ํ–ˆ์„ ๋•Œ ์‚ญ์ œ ๋ฒ„ํŠผ์„ ๋งŒ๋“ค ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€