ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

์˜ค๋Š˜์€ iOS ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด ๋น ์งˆ ์ˆ˜ ์—†๋Š” Delegate์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!

 

์‚ฌ์‹ค, ์ œ๊ฐ€ ์ฒ˜์Œ iOS ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ, ์ œ์ผ ์ฒ˜์Œ ๋งˆ์ฃผ์ณค๋˜ ๋‚œ๊ด€์ด ์ด DelegateํŒจํ„ด์˜ ์ดํ•ด์˜€๋˜,,,,

๊ทธ๋ž˜์„œ, ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ test์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ์‹ค์ œ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„์ด ๋˜๊ณ , ๋™์ž‘์ด ๋˜๋Š”์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

 

(๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ ํ•œ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ธฐ๋กํ•˜๊ธฐ์œ„ํ•ด ์ž‘์„ฑํ•˜๋Š” ๊ธ€์ด๊ธฐ ๋•Œ๋ฌธ์—, ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. )

.

.

.

Delegate๋ž€?

 

Delegate๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ‘protocol’ ์ด๋ผ๋Š” ๊ฐœ๋…์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด, Delegate๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœํ† ์ฝœ์˜ ์ง‘ํ•ฉ(?)์œผ๋กœ ๊ตฌํ˜„์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

 

์ด๋Ÿฌํ•œ ํ”„๋กœํ† ์ฝœ์„ ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋น„๊ต๋ฅผ ํ•˜์ž๋ฉด, Java์—์„œ ์‚ฌ์šฉํ•˜๋Š” ‘์ถ”์ƒ ํด๋ž˜์Šค'์™€ ๋น„์Šทํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™๋„ค์š”!

์ถ”์ƒํด๋ž˜์Šค์—๋Š” ์—ฌ๋Ÿฌ function์„ ์ •์˜ํ•ด ๋†“๊ธฐ๋งŒ ํ•˜๊ณ , ์‹ค์ œ ๊ตฌํ˜„์€ ํ•˜์ง€ ์•Š๋Š”๋ฐ, ํ”„๋กœํ† ์ฝœ์ด ์ด๋Ÿฌํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

 

์ฆ‰, ์ง€์ผœ์•ผ ํ•˜๋Š” ๊ทœ์น™์˜ ๊ป๋ฐ๊ธฐ๋งŒ ๋งŒ๋“ค์–ด ๋‘๊ณ  ์‹ค์ œ ๋‚ด์šฉ์€ ์ •์˜ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ์ด ํ”„๋กœํ† ์ฝœ ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์Œ,, ์˜ˆ๋ฅผ ๋“ค๋ฉด 

 

 

๋ฐฅ์„ ๋จน๋‹ค() ๋ผ๋Š” protocol์„ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ•ด ๋ด…์‹œ๋‹ค.

์ง€๊ธˆ ์šฐ๋ฆฌ๋Š” ' ์•„~ ๋ฐฅ์„ ๋จน๋Š”๊ตฌ๋‚˜~ ' ์˜ ์ •๋„๋งŒ ์•Œ๊ณ  ์žˆ์ง€, '์–ด๋–ค ์Œ์‹์„' '์–ด๋””์„œ' '์–ด๋–ป๊ฒŒ' '๋ˆ„๊ตฌ์™€' / '์ž…์„ ๋ฒŒ๋ฆฌ๋‹ค'

'์Œ์‹์„ ์”น๋‹ค'์™€ ๊ฐ™์ด, 

์‹ค์ œ๋กœ ๋ฐฅ์„๋จน๋Š”๋‹ค๋Š” ํ–‰์œ„๋ฅผ ์œ„ํ•œ ์š”์†Œ๋“ค์€ ๋”ฐ๋กœ ์•Œ ์ˆ˜ ์—†๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค!

๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์‹ค์ œ ๋ฐฅ์„ ๋จน๋‹ค() ๋ผ๋Š” ํ–‰์œ„๋ฅผ ์œ„ํ•œ ๋‚ด๋ถ€์ ์ธ ๋กœ์ง์„

 

 

ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•œ ์œ„์น˜์—์„œ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค!

์ž ๊ทธ๋Ÿผ ๋ณธ๊ฒฉ์ ์œผ๋กœ delegate์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

.

.

.

 

delegate๋Š” ๋ฒˆ์—ญ ํ•˜๋ฉด,

1. ๋Œ€ํ‘œ์ž

2. (๊ถŒํ•œ์„)์œ„์ž„ํ•˜๋‹ค

3. (๋Œ€ํ‘œ๋ฅผ)๋ฝ‘๋‹ค

๋ผ๋Š” ์˜๋ฏธ๋กœ ๋ฒˆ์—ญ์ด ๋ฉ๋‹ˆ๋‹ค.

 

3๊ฐ€์ง€ ์˜๋ฏธ ๋ชจ๋‘ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋Œ€์‹  ํ•œ๋‹ค๋Š” ๋Š๋‚Œ์„ ์ฃผ์ฃ ??

 

์•„~ ๊ทธ๋Ÿฌ๋ฉด Delegate๋Š” ์ž„๋ฌด๋ฅผ ๋Œ€๋ฆฌ๋กœ ํ•˜๋Š” ์‚ฌ๋žŒ์œผ๋กœ ์ดํ•ดํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋„ค์š”.

 


 

๊ทธ๋Ÿผ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์‹ค์ œ๋กœ ๊ตฌํ˜„์„ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

 

 

์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด Lable, TextField, Button์„ ์ปดํฌ๋„ŒํŠธ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ , IBOutlet , IBAction ๋ณ€์ˆ˜๋กœ ์ถ”๊ฐ€ ํ•ด์ค๋‹ˆ๋‹ค

 

๊ทธ๋ฆฌ๊ณ  IBAction ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ์ฝ”๋“œ๋Š”

@IBAction func button(_ sender : Any) {
	textLabel.text = textField.text
}

๋กœ ์„ค์ •ํ•˜๊ณ  ์‹คํ–‰์„ ํ•ด์ค๋‹ˆ๋‹ค. 

 

 

์œ„์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ textField์˜ ๋‚ด์šฉ์ด textLabel๋กœ ์ž˜ ์ „๋‹ฌ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

.

.

.

์ž ๊ทธ๋Ÿผ ์ด์ œ, Delegate๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ ํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

 

 

1) ๊ฐ€์žฅ ๋จผ์ € ํ•ด์•ผ ํ•  ์ž‘์—…์€ '์ฑ„ํƒ'์„ ํ•ด์ฃผ๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ, UIViewController ํด๋ž˜์Šค ์˜†์— UITextFieldDelegate๋ผ๊ณ  ‘์ฑ„ํƒ' ์ž‘์—…์„ ์ง„ํ–‰ ํ•ด์ค๋‹ˆ๋‹ค!

์ด๋•Œ, protocol์„ ‘์„ ์–ธ'ํ–ˆ๋‹ค๋Š” ๊ฒƒ์œผ๋กœ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ์ž˜๋ชป๋œ ์ดํ•ด์ž…๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๊ฐ€์ง€ protocol ์ค‘ ๋‚˜๋Š” UITextFieldDelegate๋ฅผ ‘์ฑ„ํƒ’ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์˜ณ์€ ์˜๋ฏธ์ž…๋‹ˆ๋‹ค!

 

 

์ดํ›„, ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•œ ๋ถ€๋ถ„์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•ด์ฃผ๊ฒŒ ๋˜๋ฉด, ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋„ ์•„๋ฌด ๋™์ž‘๋„ ํ•˜์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค!

 

2) ์ด์ œ delegate๋ฅผ ์ •ํ•˜๋Š” ์ž‘์—… ์ฆ‰, ์œ„์ž„์ž๋ฅผ ์ •ํ•ด์ฃผ๋Š” ์ž‘์—… ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ viewDidLoad()ํ•จ์ˆ˜์—

textfiled.delegate = self

ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ ํ•ด์ค๋‹ˆ๋‹ค.

 

์ด ์ฝ”๋“œ๋Š”, ์œ„์ž„์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๊ณผ์ •์œผ๋กœ

์ฆ‰, textField์˜ ์‹ค์ œ ์ž„๋ฌด๋Š” ๋‚ด๊ฐ€ ๋Œ€์‹ ํ• ๊ฒŒ!! ๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค!

 

(์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ๋‚˜ (self)๋Š” ํ˜„์žฌ ํด๋ž˜์Šค์ธ ViewController๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.)

 

์ •๋ฆฌ๋ฅผ ํ•˜์ž๋ฉด,

1) UITextFieldDelegate์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ๋“ค์„

2) textField.delegate = self ๋ผ๋Š” ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด,

3) self๋ฅผ ์˜๋ฏธํ•˜๋Š” ํ˜„์žฌ ํด๋ž˜์Šค์ธ ViewController๊ฐ€ textField๋ฅผ ๋Œ€์‹ ํ•ด์„œ ๋™์ž‘

ํ•ด์ค€๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ delegate๋ฅผ ์„ค์ • ํ–ˆ์œผ๋ฉด, ์œ„์ž„๋ฐ›์€ ViewController๋‚ด๋ถ€์—

์‹ค์ œ ๋™์ž‘์„ ์ž‘์„ฑ ํ•ด์ฃผ์–ด์•ผ ์‹ค์ œ๋กœ ๋™์ž‘์„ ํ•˜๊ฒ ์ฃ ?.

 

์ด textFieldShouldReturn์€ UITextFieldDelegate ์•ˆ์— ์ •์˜๋˜์–ด์žˆ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” self = delegate๋ฅผ ์„ค์ • ํ•ด ์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ˜„์žฌ ViewController์—์„œ

ํ•ด๋‹น ํ•จ์ˆ˜์˜ ๋‚ด๋ถ€๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

(์ฐธ๊ณ ๋กœ, ์œ„์˜ textFieldShouldReturnํ•จ์ˆ˜๋Š” ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ, 'ํ…์ŠคํŠธ ํ•„๋“œ์˜ return์„ ๊ฐ์ง€ํ•˜๋Š” ํ•จ์ˆ˜ ์ž…๋‹ˆ๋‹ค!)

 

์œ„์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋™์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด...!

์ด์ฒ˜๋Ÿผ, Button ์„ ๋ˆ„๋ฅด์ง€ ์•Š์•„๋„,

keypad์˜ enter๋ฅผ ํ…์ŠคํŠธ ํ•„๋“œ์˜ return์„ ๊ฐ์ง€ํ•˜์—ฌ 

๋ผ๋ฒจ์— ํ•ด๋‹น ๋‚ด์šฉ์ด ์ž‘์„ฑ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

 

.

.

.


์‚ฌ์‹ค ์ด๋Ÿฌํ•œ ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ protocol์ด๋‚˜ delegate ์ด์™ธ์—๋„

iOS ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉด ์ˆ˜๋งŽ์€ ์ปค์Šคํ…€ protocol์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ, delegate์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ๊ผญ ํ™•์‹คํ•˜๊ฒŒ ์ดํ•ดํ•˜์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”!

 

 

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๋ฐ˜์‘ํ˜•
๋งํฌ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
Total
Today
Yesterday