๐ŸŽ ์•„์ด-์˜ค-์—์Šค/๐Ÿ“ฑ iOS ๊ฐœ๋ฐœ

[iOS] UITableView + UITableViewCell (1): ํ…Œ์ด๋ธ” ๋ทฐ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

๊ฐœ๋ฐœํ•˜๋Š” ํ›ˆ์ด 2021. 9. 25. 20:11

UITableView

UITableView์€ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ํ•œ ์ค„์— ํ•˜๋‚˜์˜ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ทฐ์ž…๋‹ˆ๋‹ค. ์•„์ดํฐ์˜ ์„ค์ • ์•ฑ์ด๋‚˜, ์—ฐ๋ฝ์ฒ˜ ์•ฑ์ด UITableView๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ UITableView์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…๊ณผ ์‚ฌ์šฉ๋ฐฉ๋ฒ•๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

UITableView ๊ตฌ์„ฑ์š”์†Œ

๋จผ์ € ํ…Œ์ด๋ธ” ๋ทฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋“ค์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Section๊ณผ Row

๋ชจ๋“  ํ…Œ์ด๋ธ” ๋ทฐ๋Š” ์„น์…˜๊ณผ ํ–‰์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์„น์…˜์€ ์ปจํ…์ธ ๋“ค์˜ ๋ถ„๋ฅ˜๋ฅผ ์˜๋ฏธํ•˜๊ณ  ํ–‰์€ ๊ฐ ์ฝ˜ํ…์ธ ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํ…Œ์ด๋ธ”์˜ ํ–‰์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ–‰์—๋Š” ๋Œ€๋ถ€๋ถ„ ์„œ๋กœ ๋‹ค๋ฅธ ์ฝ˜ํ…์ธ ๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒ ์ฃ ? ๊ทธ๋ž˜์„œ ๊ฐ ํ–‰์„ ๋ทฐ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ณ  ์ด ๋ทฐ๋ฅผ UITableViewCell์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 

 

UITableViewCell

UITableViewCell์€ ์œ„์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” ๋ทฐ๊ฐ€ ์–ด๋–ค ์ƒํƒœ์ธ์ง€์— ๋”ฐ๋ผ, ๊ทธ๋ฆฌ๊ณ  ๊ฐ ์…€์ด ์–ด๋–ค ๋‚ด์šฉ์„ ๋‹ด๊ณ ์žˆ๋ƒ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ฐ ์…€์ด ์ฝ˜ํ…์ธ ์˜ ๋‚ด์šฉ๋งŒ์„ ๋‹ด๊ณ  ์žˆ๋‹ค๋ฉด, ์ฒซ ๋ฒˆ์งธ์ธ Content Only ๊ตฌ์„ฑ์ฒ˜๋Ÿผ ๋‚ด์šฉ๋งŒ ๋ณด์—ฌ์ฃผ๋ฉด ๋˜๊ฒ ์ฃ . 

์ด ์—ฐ๋ฝ์ฒ˜ ์•ฑ ์ฒ˜๋Ÿผ์š”!

 

๊ทธ๋Ÿผ with accessory view๋Š” ์–ด๋–จ๊นŒ์š”?

Accessory View๋„ ์—ฐ๋ฝ์ฒ˜ ์•ฑ์—์„œ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ์š”, ์…€์˜ ๊ฐ€์žฅ ์šฐ์ธก์— ์žˆ๋Š” ํ™”์‚ดํ‘œ, ์ •๋ณด ๋“ฑ๊ณผ ๊ฐ™์€ ์ž‘์€ ์•„์ด์ฝ˜์ด Accessory View์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

 

Edit Mode๋„ ์—ฐ๋ฝ์ฒ˜ ์•ฑ์—์„œ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ์šฐ์ธก ์ƒ๋‹จ์— ํŽธ์ง‘ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ง ๊ทธ๋Œ€๋กœ ํŽธ์ง‘ ๋ชจ๋“œ๋กœ ๋“ค์–ด๊ฐ€๊ฒ ์ฃ ? ํ•œ๋ฒˆ ๋ˆŒ๋Ÿฌ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ†ตํ™”๋‚ด์—ญ์„ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“œ๊ฐ€ ๋˜๋ฉด์„œ ์‚ญ์ œ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” Delete Control์ด ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

๊ทธ๋Ÿผ ์ด์ œ UITableView๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์•ฑ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

UITableView ์ถ”๊ฐ€ํ•˜๊ธฐ

XCode ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๊ฒ€์ƒ‰์„ ํ•ด๋ณด๋ฉด Table View์™€ Table View Controller๋ฅผ ๋ชจ๋‘ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. Table View๋Š” ๊ธฐ์กด ์ปจํŠธ๋กค๋Ÿฌ์— ์ƒˆ๋กœ์šด ๋ทฐ๋กœ ํ…Œ์ด๋ธ” ๋ทฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , Table View Controller๋Š” ํ…Œ์ด๋ธ” ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ƒˆ๋กœ์šด ์”ฌ์„ ๋งŒ๋“ค๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” Table View๋Š” ํ™”๋ฉด์„ ๊ฐ€๋“ ์ฑ„์šฐ์ง€ ์•Š๊ณ  ๋ทฐ์˜ ์ผ๋ถ€๋ถ„์— ํ…Œ์ด๋ธ” ๋ทฐ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด์ฃ . 

 

์šฐ๋ฆฌ๋Š” ์ผ๋‹จ ํ…Œ์ด๋ธ” ๋ทฐ๋งŒ ๋ณด์—ฌ์ค„ ์ƒ๊ฐ์ด๋‹ˆ Table View Controller๋ฅผ ์„ ํƒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 

 

๊ธฐ์กด์— ์žˆ๋˜ ViewController๋ฅผ ์‚ญ์ œํ•˜๊ณ , ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ” ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋˜๋ฉด ๋ฐ”๋กœ ํ…Œ์ด๋ธ” ๋ทฐ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์˜ค๋ฅธ์ชฝ ์ธ์ŠคํŽ™ํ„ฐ์—์„œ ์‹œ์ž‘ ์‹œ ์ด ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ์˜ต์…˜์„ ์ฒดํฌํ• ๊ฒŒ์š”!

 

๊ทธ๋Ÿผ ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ด๊ฒƒ์ €๊ฒƒ ๋งŒ์ ธ๋ณผ๊นŒ์š”?

Static Cell Content ์‚ฌ์šฉํ•˜๊ธฐ

๋จผ์ € ๋Ÿฐํƒ€์ž„์— ๋™์ ์œผ๋กœ ์…€์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋‚ด์šฉ์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋Š” Static Cell๋ถ€ํ„ฐ ์‚ฌ์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์€ ์ตœ์†Œํ™”๋˜๊ฒ ์ง€๋งŒ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ณ„์† ๋ณด์—ฌ์ค˜์•ผ ํ•˜๋Š” ํ…Œ์ด๋ธ” ๋ทฐ๋ผ๋ฉด ์œ ์šฉํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๊ฒ ์ฃ ?

๋งŒ๋“ค์–ด์ง„ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ Table View๋ฅผ ์„ ํƒํ•˜๋ฉด ์šฐ์ธก ์ธ์ŠคํŽ™ํ„ฐ์— Content๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ Static Cells๋กœ ๋ณ€๊ฒฝํ•ด๋ด…์‹œ๋‹ค!

 

๋ณ€๊ฒฝํ•˜๊ณ  ์‹คํ–‰ํ•ด๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ๋นˆ ํ…Œ์ด๋ธ”์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๊ฐ ์…€์„ ์„ค์ •ํ•˜๊ณ  ์„น์…˜๋„ ํ•œ๋ฒˆ ๋‚˜๋ˆ ๋ณผ๊ฒŒ์š”. 

 

์ด๋ ‡๊ฒŒ ์ƒ๊ธด ์—ฐ๋ฝ์ฒ˜ ์•ฑ๊ณผ ๋น„์Šทํ•œ ๋ชจ์–‘์œผ๋กœ ๋งŒ๋“ค์–ด๋ณด๋ ค๊ณ  ํ•˜๋Š”๋ฐ์š”, ์œ„์— ํ”„๋กœํ•„ ๋ถ€๋ถ„์€ ์–ด๋ ค์šธ ๊ฒƒ ๊ฐ™์œผ๋‹ˆ๊นŒ ์ œ์™ธํ•˜๊ณ  ํ…Œ์ด๋ธ” ๋ถ€๋ถ„๋งŒ ๋งŒ๋“ค์–ด๋ด…์‹œ๋‹ค..! ์ผ๋‹จ ์„น์…˜์„ 2๊ฐœ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๋ฝ์ฒ˜ ์•ฑ์— ๊ฐ€๋ฉด ๊ฐ€๋‚˜๋‹ค ์ˆœ์œผ๋กœ ์—ฐ๋ฝ์ฒ˜๊ฐ€ ์„น์…˜์œผ๋กœ ๋‚˜๋‰˜์–ด์„œ ๋ณด์ด์ฃ ? ๊ทธ๋ฆฌ๊ณ  ์„น์…˜์˜ ์ด๋ฆ„์ด ๋ณด์ด๋Š”๋ฐ ์ด ์ด๋ฆ„์„ ์„ค์ •ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ขŒ์ธก์—์„œ ์„น์…˜์„ ์„ ํƒํ•˜๊ณ , ์šฐ์ธก ์ธ์ŠคํŽ™ํ„ฐ์—์„œ ํ—ค๋”๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ํ•ด๋ณด๋ฉด?

์š”๋ ‡๊ฒŒ ์„น์…˜์ด ์—ฐ๋ฝ์ฒ˜ ์•ฑ์ฒ˜๋Ÿผ ๋‚˜๋‰œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!! ์„น์…˜ ๊ฐ„ ์—ฌ๋ฐฑ์ด๋‚˜ ๊ธ€์ž์˜ ํฌ๊ธฐ๋‚˜ ์ƒ‰์ƒ์„ iOS๊ฐ€ ์•Œ์•„์„œ ์˜ˆ์˜๊ฒŒ ์žก์•„์ค˜์„œ ์ง„์งœ ์ข‹์€ ๊ฒƒ ๊ฐ™์•„์š”..

 

๊ทธ๋Ÿผ ์—ฐ๋ฝ์ฒ˜๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณผ๊ฒŒ์š”. ์—ฐ๋ฝ์ฒ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๊ฐ ์…€์„ ๊ฑด๋“œ๋ ค์•ผ๊ฒ ์ฃ ? ์ด๋ฒˆ์—๋Š” ์™ผ์ชฝ ๋‚ด๋น„๊ฒŒ์ดํ„ฐ๋กœ ๊ฐ€์„œ ์…€์„ ์„ ํƒํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์˜ค๋ฅธ์ชฝ ์ธ์ŠคํŽ™ํ„ฐ์—์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํƒ€์ผ ์ค‘์—์„œ ์—ฐ๋ฝ์ฒ˜ ์•ฑ๊ณผ ๊ฐ€์žฅ ๋น„์Šทํ•œ Basic์„ ์„ ํƒํ•˜๊ณ  ์ƒ˜ํ”Œ๋กœ ์—ฐ๋ฝ์ฒ˜ ์ด๋ฆ„์„ ๋ช‡ ๊ฐœ ๋„ฃ์–ด๋ณผ๊ฒŒ์š”.

 

 

์ž๋™์œผ๋กœ ๋ ˆ์ด๋ธ”์ด ์ถ”๊ฐ€๋์Šต๋‹ˆ๋‹ค! ์ด ๋ ˆ์ด๋ธ”๋งŒ ์ฑ„์›Œ์ฃผ๋ฉด ๋˜๊ฒ ์ฃ ?

 

์ด๋Ÿฐ ์‹์œผ๋กœ ์„น์…˜๊ณผ ์…€์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค..! ์…€์— ์—ฌ๋Ÿฌ ์š”์†Œ๋“ค์ด ์žˆ๋Š”๋ฐ ํ•œ ๋ฒˆ์”ฉ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์‹ถ์–ด์„œ์š”, ์ด๋ฒˆ์—๋Š” ์—ฐ๋ฝ์ฒ˜ ์•ฑ์˜ ์ตœ๊ทผ ํ†ตํ™”๋ชฉ๋ก์„ ๋”ฐ๋ผ์„œ ๋งŒ๋“ค์–ด๋ณผ๊ฒŒ์š”.

 

 

์š” ํ™”๋ฉด์˜ ํ…Œ์ด๋ธ” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค! 

 

์ด๋ฒˆ์—๋Š” ์ฝ˜ํ…์ธ  ๋ถ€๋ถ„์— ์—ฐ๋ฝ์ฒ˜ ์ด๋ฆ„, ์œ„์น˜, ๋‚ ์งœ๊ฐ€ ์žˆ๊ณ  ์…€์˜ ์ œ์ผ ๋์— Accessory View๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ฒˆ์—๋Š” ์„น์…˜์„ ํ•˜๋‚˜๋กœ ์ค„์ด๊ณ  ๋งˆ๋•…ํ•œ ๊ธฐ๋ณธ ์Šคํƒ€์ผ์ด ์—†์–ด์„œ Custom์œผ๋กœ ์„ค์ •ํ•˜๊ณ  3๊ฐœ์˜ ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด์šฉ์„ ์ฑ„์›Œ์ค„๊นŒ์š”?

๊ทธ๋Ÿด๋“ฏํ•˜๊ฒŒ ํ…์ŠคํŠธ๋Š” ๋งŒ๋“ค์–ด์กŒ๋„ค์š”! ์ด์ œ ์˜ค๋ฅธ์ชฝ์— ๋ณด์ด๋Š” ์ •๋ณด ์•„์ด์ฝ˜์„ Accessory View๋กœ ์ถ”๊ฐ€ํ•ด๋ณผ๊ฒŒ์š”.

 

์…€์„ ์„ ํƒํ•˜๊ณ  ์˜ค๋ฅธ์ชฝ์„ ๋ณด๋ฉด Accessory ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค! ์—ฌ๊ธฐ์„œ Detail์„ ์„ ํƒํ•˜๊ณ  ์‹คํ–‰ํ•ด์ฃผ์„ธ์š”~!

์˜ค ์ด์ œ ์ง„์งœ ์—ฐ๋ฝ์ฒ˜ ์•ฑ ๊ฐ™์•„์กŒ๋„ค์š”!! ๊ทผ๋ฐ ์…€์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๋‹ค ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์žˆ์œผ๋‹ˆ ๋„ˆ๋ฌด ๋ฒˆ๊ฑฐ๋กญ๋„ค์š”.. 

 

๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์ˆ˜์ž‘์—…๋ณด๋‹ค๋Š” ์ž๋™ํ™”๋ฅผ ํ•ด์•ผ๊ฒ ์ฃ ..! ๊ทธ๋ž˜์„œ ๋‹ค์Œ ํฌ์ŠคํŠธ๋ถ€ํ„ฐ๋Š” UITableViewController๋ฅผ ์ƒ์†๋ฐ›๋Š” ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์„œ ๋‚ด์šฉ์„ ์ž๋™์œผ๋กœ ์ฑ„์›Œ์ฃผ๋„๋ก ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!!