iOS ์•ฑ ๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜/TIL

1์ฃผ์ฐจ(3) - ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ / ํ…Œ์ด๋ธ” ๋ทฐ(Table View) / ๋„ค๋น„๊ฒŒ์ด์…˜

yeggrrr๐Ÿผ 2024. 2. 29. 22:00
728x90

 


<3์ฃผ์ฐจ TIL>

์˜ค๋Š˜์€ ๊ฐ•์˜๋Š” ํ•œ ๋ฒˆ์— ์ดํ•ดํ•˜๊ธฐ ์กฐ๊ธˆ ์–ด๋ ค์šด ๋ถ€๋ถ„๋“ค์ด ์žˆ์–ด์„œ,
๋‘ ๋ฒˆ์งธ ๊ฐ•์˜์ธ 'ํ…Œ์ด๋ธ” ๋ทฐ ๊ตฌํ˜„'์€ 3๋ฒˆ์„ ๋ดค๋‹ค..ใ…Žใ…Ž
๋ณด๊ณ  ๋‚˜๋‹ˆ ์ €์ ˆ๋กœ ์™ธ์›Œ์ง€๋Š” ๋ถ€๋ถ„๋“ค๋„ ์žˆ์—ˆ๊ณ , ๊ณ„์† ๋ณด๋‹ˆ ์ต์ˆ™ํ•ด์ ธ์„œ ์ž์—ฐ์Šค๋ ˆ ๋ฐ›์•„๋“ค์—ฌ์กŒ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

[๋‚ด๋ฐฐ์บ ]์„ ์‹œ์ž‘ํ•˜๊ณ , 'ํ•˜๋ฃจ 12์‹œ๊ฐ„'์ด ์ง„์งœ ๊ธธ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ,
๋ณต์Šต์„ ์—ฌ๋Ÿฌ ๋ฒˆ ํ•˜๋‹ค ๋ณด๋‹ˆ, ์‹œ๊ฐ„์ด ๋ถ€์กฑํ•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.๐Ÿฅน

๊ทธ๋ž˜๋„ ํ•˜๋‚˜์”ฉ ์•Œ์•„๋‚˜๊ฐ€๋Š” ์žฌ๋ฏธ๊ฐ€ ์žˆ๋‹ค! ^0^




์˜ค๋Š˜ ๊ฐ•์˜ ๊ฐ„๋‹จํ•˜๊ฒŒ(?) ์ •๋ฆฌํ•ด๋ณด๋ฉด~!๐Ÿคฅ

<3์ฃผ์ฐจ_1๊ฐ•>
โ‘  array์™€ dictionary๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ๋ฒ•์„ ํ™œ์šฉํ•œ ์žฅ์  ์•Œ์•„๋ณด๊ธฐ
โ‘ก ์„ค๊ณ„๋ฅผ ํ•˜๊ณ  ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด ๋งŒ๋‚˜๊ฒŒ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„
'๋ชจ๋ธ๋ง์ด ๋˜์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ'๋ผ๊ณ  ํ•˜๋Š”๋ฐ,
๊ฐ•์˜๋ฅผ ํ†ตํ•ด ๋‚˜๋„ ์ง์ ‘ ๋ชจ๋ธ๋ง์„ ํ•ด๋ณด๊ธฐ

<3์ฃผ์ฐจ_2๊ฐ•>
โ‘  ํ…Œ์ด๋ธ” ๋ทฐ์— ์…€(cell)์„ ์ถ”๊ฐ€ํ•˜๊ธฐ, ๊ทธ ์…€(cell)์— Label ์ถ”๊ฐ€ํ•˜๊ธฐ
โ‘ก ๋นŒ๋“œ ํ›„, ์‹คํ–‰ํ–ˆ์„ ๋•Œ ์›ํ•˜๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋ณด์ด๋„๋ก ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ
โ‘ข ๊น”๋”ํ•œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด extension ํ™œ์šฉํ•˜๊ธฐ

<3์ฃผ์ฐจ_3๊ฐ•>
โ‘  ๋„ค์ด๊ฒŒ์ด์…˜์„ ํ™œ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ viewcontroller๋ฅผ ์„œ๋กœ ์—ฐ๊ฒฐํ•˜๊ธฐ





๊ทธ๋Ÿผ ์ด์ œ๋ถ€ํ„ฐ '1๊ฐ•_๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ'๋ถ€ํ„ฐ ์ •๋ฆฌ ์‹œ์ž‘!!


 



์šฐ์„ , 'PracticeUI'๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ƒˆ๋กœ์šด ProjectํŒŒ์ผ์„ ๋งŒ๋“ค์—ˆ๋‹ค.

ํ•œ ํ™”๋ฉด์—์„œ ๋ฐ”๋กœ ๋ณด๋ฉด์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋„ ์˜ค๋ฅธ์ชฝ์— ํ•จ๊ป˜ ๋„์›Œ๋†จ๋‹ค.




๋จผ์ €,
view.backgroundColor = .red 
์‹คํ–‰ํ•˜์—ฌ ์ž˜ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ! 

 



์—ญ์‹œ ํ‘ธ๋ฐ”์˜ค ๋Ÿฌ๋ฒ„.. ๋ฐ์ดํ„ฐ ๋งŒ๋“ค ๋•Œ๋„ ๋ƒ…๋‹ค ๋ฐ”์˜คํŒจ๋ฐ€๋ฆฌ ๋„ฃ๊ธฐ.๐Ÿ˜‚
let friendName: [String] = ["Fubao", "Aibao", "Lebao"]

๊ทธ๋ฆฌ๊ณ , Label์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์„œ, ์ฝ”๋“œ๋ž‘ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๊ฒŒ
cotroll - drag & drop!
(Label ์ด๋ฆ„ nameLabel)


 



๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Button๋„ ํ•˜๋‚˜ ์ถ”๊ฐ€! (Button → Outlet(X), Action(O))
(→ Button ์ด๋ฆ„: didTabButton)

์Šคํ† ๋ฆฌ๋ณด๋“œ์— Button์ด๋ฆ„์€ 'Change Name'์œผ๋กœ ๋ณ€๊ฒฝ!


 



var count: Int = 0
( → ์ผ๋‹จ, ๋ฌด์‹œ. ๋ฐ”๋กœ ๋‹ค์Œ์— ๋ฐ”์˜คํŒจ๋ฐ€๋ฆฌ ์ด๋ฆ„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ์“ธ ์ฝ”๋“œ)

nameLabel.text = "Hello!!"

์ด๋ ‡๊ฒŒ ํ•˜๊ณ , ์‹คํ–‰์‹œ์ผœ์„œ ๋งŒ๋“ค์–ด๋†“์€ ๋ฒ„ํŠผ(Change Name)์„ ํด๋ฆญํ•ด๋ณด๋‹ˆ,
"Hello!!"๋กœ ๋ฐ”๋€œ.




nameLabel.text = friendName[count]
(→ ์œ„์— count์— 0์„ ๋„ฃ์—ˆ์œผ๋‹ˆ, friendName์— 0๋ฒˆ์งธ ์ธ "Fubao" ์˜๋ฏธ.)

๋‹ค์‹œ ์‹คํ–‰ํ•ด์„œ ๋ฒ„ํŠผ(Change Name)์„ ํด๋ฆญํ•ด๋ณด๋‹ˆ,
"Fubao"๋กœ ๋ฐ”๋€œ.





๊ทธ๋Ÿผ, friendName์— ์žˆ๋Š” ๋ฐ”์˜ค ํŒจ๋ฐ€๋ฆฌ์˜ ํ•œ๊ตญ์–ด ๋ฒ„์ „(koreanNames)์ธ
let koreanNames: [String:String] = ["Fubao":"ํ‘ธ๋ฐ”์˜ค", "Aibao":"์•„์ด๋ฐ”์˜ค", "Lebao":"๋Ÿฌ๋ฐ”์˜ค"]
์„ ๋งŒ๋“ค๊ณ ,

count = count + 1 ์„ ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

 


โ€ป friendName → friendNames (๋ณ€๊ฒฝํ–ˆ์Œ) โ€ป

์ด๋ ‡๊ฒŒ ํ•œ๊ตญ์–ด ๋ฒ„์ „์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๋€œ.

๋ฒ„ํŠผ(Change Name)์„ ํด๋ฆญํ•˜๋ฉด,
์ˆœ์„œ๋Œ€๋กœ "ํ‘ธ๋ฐ”์˜ค, "์•„์ด๋ฐ”์˜ค", "๋Ÿฌ๋ฐ”์˜ค"๋กœ ๋ฐ”๋€Œ์–ด ๋‚˜์˜จ๋‹ค.




๊ทธ๋Ÿผ ์ด์ œ Label์„ 2๊ฐœ ๋” ๋งŒ๋“ค์–ด์„œ
๊ฐ Label์— ํ‘ธ๋ฐ”์˜ค, ์•„์ด๋ฐ”์˜ค, ๋Ÿฌ๋ฐ”์˜ค๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

์œ„์™€ ๊ฐ™์ด 2๊ฐœ ๋˜ํ•œ ์ฝ”๋“œ์™€ ์—ฐ๊ฒฐํ•œ๋‹ค.
(๊ฐ Label์˜ ์ด๋ฆ„bestFriendNameLabel, nextFriendNameLabel)

๊ทธ๋ฆฌ๊ณ  ๋งŒ๋“ค์–ด ๋†“์€ ๋ฐ์ดํ„ฐ ํ™œ์šฉํ•ด์„œ

nameLabel. text = friendNames[0]
bestFriendNameLabel.text = friendNames[1]
nextFriendNameLabel.text = friendNames[2]

์ด๋ ‡๊ฒŒ ์ฝ”๋“œ ์ž‘์„ฑํ•ด๋ณด์ž.


์‹คํ–‰ํ•ด์„œ ๋ฒ„ํŠผ(Change Name)์„ ํด๋ฆญํ•ด๋ณด๋ฉด,
์œ„ ํ™”๋ฉด๊ณผ ๊ฐ™์ด ๋ฐ”๋€๋‹ค.




๊ทธ๋Ÿฐ๋ฐ, ์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋ฉด
๊ฐ์ž ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ ํž˜๋“ค๋‹ค.

๊ทธ๋ž˜์„œ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์œผ๋กœ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃนํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์œผ๋กœ
struct ํ˜น์€ class๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

struct๋ฅผ ํ™œ์šฉํ•œ ์•„๋ž˜ ํ™”๋ฉด Go!

(๊ธฐ์กด ์ฝ”๋“œ์™€ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐ ๋ฐ”์˜ค ํŒจ๋ฐ€๋ฆฌ์˜ ์ด๋ฆ„์—๋Š” 2๋ฅผ ๋ถ™์ž„.)

์œ„ ํ™”๋ฉด์„ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด
๊ธฐ์กด์˜ ์ฝ”๋“œ๋กœ ํ•˜๋“ , ์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋กœ ํ•˜๋“  ๊ฒฐ๊ณผ๋Š” ๊ฐ™๋‹ค.

ํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณ„์† ์ถ”๊ฐ€๋œ๋‹ค๋ฉด, ์ง€๊ธˆ์˜ ๋ฐฉ๋ฒ•์ด ๋” ์ข‹๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€
๋ฐ์ดํ„ฐ๋ฅผ ๋ช…๋ช…ํ•˜๊ณ , ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•ด์„œ(๋ชจ๋ธ๋ง ํ•ด์„œ)
์•Œ์•„๋ณด๊ธฐ ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๋ดค๋‹ค.

์ด๊ฒƒ์ด ๋ฐ”๋กœ '๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง'์ด๋‹ค.๐Ÿ˜€





์ด์ œ '2๊ฐ•_ํ…Œ์ด๋ธ” ๋ทฐ ๊ตฌํ˜„'์ด๋‹ค!




ํ…Œ์ด๋ธ” ๋ทฐ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ,
์˜ค๋Š˜์€ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ๋‹ค.
(์ด๋ฒˆ ๊ฐ•์˜๋Š” ๊ธ€๋กœ๋งŒ ์ •๋ฆฌํ•  ์˜ˆ์ •)

์—ฐ์Šตํ•  ๋•Œ ์•„๋ž˜ ์ˆœ์„œ๋Œ€๋กœ ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค!




โ–ท ์œ„์—์„œ ๋งŒ๋“ค์—ˆ๋˜ PracticeUI ํŒŒ์ผ ๊ทธ๋Œ€๋กœ ์ง„ํ–‰.
โ–ท ์ƒˆ๋กœ์šด ViewController ์ƒ์„ฑํ•˜๊ธฐ ('MyTableViewController'๋ผ ํ•˜๊ฒ ์Œ)
โ–ท is initial View Controller๋กœ ์„ค์ •ํ•˜๊ธฐ
โ–ท class์— ์ƒˆ๋กœ ๋งŒ๋“  'MyTableViewController'๋กœ ํ• ๋‹นํ•˜๊ธฐ


(↓)ํ•ด๋‹น ์Šคํ† ๋ฆฌ ๋ณด๋“œ์—์„œ ์ง„ํ–‰(↓)


→ ์Šคํ† ๋ฆฌ ๋ณด๋“œ์—์„œ 'Table view' drag & drop!
→ ์‹คํ–‰ํ•˜๋ฉด, ์•„๋ฌด๊ฒƒ๋„ ๋ณด์ด์ง€ ์•Š์œผ๋‹ˆ, ๋ฐฐ๊ฒฝ ์ƒ‰์ƒ ์„ค์ • Go!
→ ์ด์–ด์„œ ์Šคํ† ๋ฆฌ ๋ณด๋“œ์—์„œ 'Table View Cell'์„
'Table View' ์•ˆ์ชฝ์— drag & drop!
→ ์…€์ด ๋ณด์—ฌ์ง€๋‚˜ check! (์•„๋งˆ ์•ˆ๋ณด์ผ ๊ฑฐ์ž„)


์ด์ œ main.storyboard ํ™”๋ฉด๊ณผ ์ƒˆ๋กœ์šด ViewController ๊ฐ™์ด ๋„์›Œ๋†“๊ณ  ์ง„ํ–‰


→ 'Table View'๋ฅผ control๋กœ ์ฝ”๋“œ์™€ ์—ฐ๊ฒฐ (โ–ท class ~ ๋ฐ‘์—)
→ ์ด๋ฆ„์€ 'myTableView'๋ผ๊ณ  ํ•˜๊ฒ ์Œ.
myTableView.backgroundColor = .blue ( โ–ท super. ~ ๋ฐ‘์—)
(์ด๋ ‡๊ฒŒ ํ•ด๋ณด๋ฉด ์—ฐ๊ฒฐ๋œ๊ฑฐ ํ™•์ธ ๊ฐ€๋Šฅ!)



์ด์ œ UITableViewDelegate, UITableViewDataSource๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฑฐ์ž„.
("๋‚˜๋Š” ํ…Œ์ด๋ธ” ๋ทฐ๊ฐ€ ๋™์ž‘ํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ์–ด. ํ…Œ์ด๋ธ” ๋ทฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ์‹ถ์–ด.")
์ด๋Ÿฐ ์˜๋ฏธ์ž„.


class MyTableViewController: UIViewController,
UITableViewDelegate, UITableViewDataSource {

 
→ ์ด๋ ‡๊ฒŒ Go!
(๊ทผ๋ฐ, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฑฐ์ž„. ์ถ”์ฒœํ•ด ์ฃผ๋Š” ๋Œ€๋กœ Fix ํด๋ฆญ!)

<ํด๋ฆญํ•˜๋ฉด ๋œจ๋Š” ์ฝ”๋“œ ์ฝ์–ด๋ณด๊ธฐ>
(์™ธ์šธ ์ˆ˜ ์—†๋‹ค๋ฉด, ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ.)

"ํ•œ section์— ๋ช‡ ๊ฐœ์˜ row๊ฐ€ ๋“ค์–ด๊ฐ”์„๋ฉด ์ข‹๊ฒ ์–ด?"
→ ์ฒซ ๋ฒˆ์งธ, code ์ž๋ฆฌ์—๋Š” 'return ์›ํ•˜๋Š” ๊ฐœ์ˆ˜'
ex) return 3

"๊ฐ row๋งˆ๋‹ค ์–ด๋–ค ์…€์ด ๋“ค์–ด๊ฐ”์œผ๋ฉด ์ข‹๊ฒ ์–ด?"
→ ๋‘ ๋ฒˆ์งธ, code ์ž๋ฆฌ์—๋Š” cell์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
let cell = myTableView.dequeueReusableCell(withIdentifier:
"MyFirstCell", for: indexPath)

๋…ธ๋ž€์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•œ ๋ถ€๋ถ„์— ๋นˆ์นธ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.
์Šคํ† ๋ฆฌ๋ณด๋“œ ์šฐ์ธก ์ฐฝ์— ๋ณด๋ฉด 'Identifier'๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
๊ฑฐ๊ธฐ์— ์ด๋ฆ„ ์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

ex) "MyFirstCell"

๋‘ ๋ฒˆ์งธ ํšŒ์ƒ‰ ์ž๋ฆฌ์—๋Š” IndexPath๋ฅผ ๋„ฃ์–ด๋‹ฌ๋ผ๊ณ  ๋˜์–ด ์žˆ์œผ๋‹ˆ,
์œ„์— ์ฝ”๋“œ์— ์ ํžŒ๋Œ€๋กœ indexPath

→ ์ด์ œ ๋ฐ˜ํ™˜ํ•ด์ฃผ๊ธฐ.
return cell  (โ–ท ๋ฐ”๋กœ ๋ฐ‘์—)

→ (super. ~ ๋ฐ‘์— ์ด์–ด์„œ ์•„๋ž˜ ์ฝ”๋“œ ์ถ”๊ฐ€)
myTableView.delegate = self
myTableView.dataSource = self


์ด๋ ‡๊ฒŒ ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋ฉด, ์ง€์ •ํ•œ ๊ฐœ์ˆ˜๋งŒํผ ์…€์ด ์ƒ๊ฒจ์žˆ์Œ!



<์ด์ œ. extension ํ™œ์šฉํ•ด๋ณด๊ธฐ>

extension(ํ™•์žฅ)์„ ์ด์šฉํ•ด์„œ ์œ„์— ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ.
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ…Œ์ด๋ธ” ๋ทฐ์™€ ๊ด€๋ จ๋œ ์ฝ”๋“œ๋“ค์„ ํ•œ ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ์Œ.


๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์„œ ์…€์— ๊ตฌํ˜„ํ•ด ๋ณผ๊ฑฐ์ž„.
(<1๊ฐ•>์—์„œ ๋งŒ๋“ค์—ˆ๋˜ ๋ฐ์ดํ„ฐ ํ™œ์šฉํ•  ์˜ˆ์ •)

let friendNames: [String] = ["Fubao", "Aibao", "Lebao", "Ruibao", "Huibao"]
( โ–ท class ~ ๋ฐ‘์—)

→ ๊ทธ๋ฆฌ๊ณ  'return ์›ํ•˜๋Š” ์…€ ๊ฐœ์ˆ˜' ์ž๋ฆฌ์—
return friendNames.count


์ด์ œ ์ด๋ฆ„์„ ๋‚˜์—ดํ•ด ๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

→ ๋ฐ‘์— return cell ์œ„์—
cell.textLabel.text = "Fubao"
(cell.textLabel?.text = "Fubao" ๋กœ ์ž๋™์œผ๋กœ ๋ฐ”๋€”๊ฑฐ์ž„)

๊ทธ๋Ÿผ ์œ„์— ํ‘ธ๋ฐ”์˜ค~ํ›„์ด๋ฐ”์˜ค๊นŒ์ง€ ๋‹ค ๋‚˜์˜ค๊ฒŒ ํ•˜๋ ค๋ฉด?
๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

cell.textLabel.text = friendNames[indexPath.row]
๋กœ ๋ฐ”๋€Œ๋ณด์ž!

๊ทธ๋ฆฌ๊ณ  ๋นŒ๋“œ Go!!

<๋!๐Ÿฅน>



์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ <2๊ฐ•_ํ…Œ์ด๋ธ” ๋ทฐ ๊ตฌํ˜„> ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค.




์ด์ œ <3๊ฐ•_๋„ค์ด๊ฒŒ์ด์…˜ ๋ฐ ํ™”๋ฉด ์ „ํ™˜> ์ •๋ฆฌ ์‹œ์ž‘!




๋„ค๋น„๊ฒŒ์ด์…˜์€ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ™”๋ฉด์„ ์˜ค๊ณ ๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.
์•„์ดํฐ์—์„œ '์„ค์ •'์„ ๋“ค์–ด๊ฐ€๋ณด๋ฉด,
์›ํ•˜๋Š” ๊ณณ์— ๋“ค์–ด๊ฐ”์„ ๋•Œ, ์ขŒ์ธก ์ƒ๋‹จ์— '๋’ค๋กœ๊ฐ€๊ธฐ ํ‚ค'๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
์ด๊ฒŒ ๋ฐ”๋กœ ๋„ค์ด๊ฒŒ์ด์…˜์„ ํ™œ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด๋‹ค. (= Show)
๊ทธ ๋ฐ–์—๋„ ์ƒ์„ธํŽ˜์ด์ง€ ํ™”๋ฉด์€ ๋˜ ๋‹ค๋ฅธ ๋А๋‚Œ์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค. (= Show Detail)

๋„ค์ด๊ฒŒ์ด์…˜(navigation)



๋„ค๋น„๊ฒŒ์ด์…˜์€ ์–ด๋””๋กœ ๊ฐ€์•ผํ•  ์ง€ ์•Œ๋ ค์ฃผ๋Š” ์žฅ์น˜์ด๋‹ค.
์ด๋™์„ ๋„์™€์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ํ™”๋ฉด์„ ๊ณ„์†ํ•ด์„œ ์ด๋™ํ•ด๋„ ๊ธธ์„ ์žƒ์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.



์ด ๊ธฐ๋Šฅ ๋˜ํ•œ Button๊ณผ Label ๋“ฑ์„ ์ถ”๊ฐ€ํ–ˆ๋˜ ๊ฒƒ ์ฒ˜๋Ÿผ

Show Library์—์„œ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฒ€์ƒ‰ : Navigation Controller


<์—ฐ๊ฒฐํ•˜๊ธฐ ์‰ฌ์šด ๋ฐฉ๋ฒ•>

์ปจํŠธ๋กค๋Ÿฌ ์ƒ๋‹จ ํด๋ฆญ

ํ•˜๋‹จ์— ๋™๊ทธ๋ผ๋ฏธ ๋ˆ„๋ฅด๊ณ , Navigation Controller ํด๋ฆญ.




์ดํ›„์— ์—ฐ๊ฒฐํ•˜๊ณ  ์‹ถ์€ ViewController๋ฅผ ๊ณ„์† ์ถ”๊ฐ€ํ•ด์„œ
๋ฒ„ํŠผ์„ ๋งŒ๋“ค๊ณ , drag & drop์„ ํ•˜๋ฉด

์ด ์ฐฝ์ด ๋œฌ๋‹ค!
ํฌ๋งํ•˜๋Š” ์Šคํƒ€์ผ๋กœ ์„ ํƒํ•ด์„œ ๋ˆ„๋ฅด๋ฉด ๋์ด๋‹ค!










728x90