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

Outlet ๋ณ€์ˆ˜์™€ Action ํ•จ์ˆ˜

by hyebin (Helia) 2022. 9. 27.
๋ฐ˜์‘ํ˜•

์•„์›ƒ๋ › ๋ณ€์ˆ˜(Outlet Variable)

  • ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ์ถ”๊ฐ€ํ•œ ๊ฐ์ฒด์˜ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ํŠน์ •ํ•œ ๋™์ž‘์„ ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜

1. ์•„์›ƒ๋ › ๋ณ€์ˆ˜ ์ถ”๊ฐ€

'Test'๋ผ๋Š” Label ๊ฐ์ฒด์•  ๋Œ€ํ•ด์„œ ์•„์›ƒ๋ › ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

Label ๊ฐ์ฒด๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ์„ ํƒํ•˜๊ณ , ๋ณด์กฐ ํŽธ์ง‘๊ธฐ ์˜์—ญ์œผ๋กœ ๋“œ๋ž˜๊ทธํ•˜์—ฌ ํด๋ž˜์Šค ์„ ์–ธ๋ฌธ ๋ฐ”๋กœ ์•„๋ž˜์— ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๋Œ์–ด๋‹ค ๋†“์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—ฐ๊ฒฐ์„ ์ด ๋‚˜ํƒ€๋‚˜๊ณ , 'Insert Outlet or Outlet Collection'์ด๋ผ๋Š” ํ‘œ์‹œ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

 

2. ์•„์›ƒ๋ › ๋ณ€์ˆ˜ ์—ฐ๊ฒฐ ์„ค์ •

์•„์›ƒ๋ › ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—ฐ๊ฒฐ ์„ค์ •์ฐฝ์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋ช…๊ณผ type, storage๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

3. ์•„์›ƒ๋ › ๋ณ€์ˆ˜ ์†Œ์Šค์ฝ”๋“œ

   @IBOutlet weak var testLabel: UILabel!

๋ณ€์ˆ˜๋ช…์„ testLabel๋กœ ํ•˜๊ณ , storage๋ฅผ weak๋กœ ์„ ํƒํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

 

  • @IBOutlet
    • IB๋Š” Interface Builder์˜ ์•ฝ์ž๋กœ @IB๋กœ ์‹œ์ž‘๋˜๋Š” ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋นŒ๋”์™€ ๊ด€๋ จ๋œ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธ
    • ๊ฐ์ฒด๋ฅผ ์†Œ์Šค์ฝ”๋“œ์—์„œ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ
    • ์ฃผ๋กœ ์ƒ‰์ƒ, ํฌ๊ธฐ, ๋ชจ์–‘, ์„ ์˜ ๋‘๊ป˜, ํ…์ŠคํŠธ ๋‚ด์šฉ ๋“ฑ ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์ œ์–ดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
  • storage - strong / weak
    • ๋ฉ”๋ชจ๋ฆฌ ํšŒ์ˆ˜ ์ •์ฑ…์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ‚ค์›Œ๋“œ
    • strong์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์„ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ๋˜์ง€ ์•Š์Œ -> ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ฐœ์ƒ
    • weak๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋”๋ผ๋„ ์‹œ์Šคํ…œ์ด ์ž„์˜์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ ๊ฐ€๋Šฅ

 

์•ก์…˜ ํ•จ์ˆ˜(Action Function)

  • ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜

1. ์•ก์…˜ ํ•จ์ˆ˜ ์ถ”๊ฐ€

'Test Button'์ด๋ผ๋Š” Button ๊ฐ์ฒด์— ๋Œ€ํ•œ ์•ก์…˜ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

Button ๊ฐ์ฒด๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ์„ ํƒํ•˜๊ณ , ๋ณด์กฐ ํŽธ์ง‘๊ธฐ ์˜์—ญ์œผ๋กœ ๋“œ๋ž˜๊ทธํ•˜์—ฌ ํด๋ž˜์Šค ๋งจ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๋Œ์–ด๋‹ค ๋†“์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—ฐ๊ฒฐ์„ ์ด ๋‚˜ํƒ€๋‚˜๊ณ , 'Insert Action, Outlet or Outlet Collection'์ด๋ผ๋Š” ํ‘œ์‹œ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

 

2. ์•ก์…˜ ํ•จ์ˆ˜ ์—ฐ๊ฒฐ ์„ค์ •

์•ก์…˜ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฐ๊ฒฐ ์„ค์ •์ฐฝ์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. Name๊ณผ Type, Event์™€ Arguments์— ๋Œ€ํ•ด ์„ค์ • ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

3. ์•ก์…˜ ํ•จ์ˆ˜ ์†Œ์Šค์ฝ”๋“œ

@IBAction func tapTestButton(_ sender: UIButton) {
   
}

๋ณ€์ˆ˜๋ช…์„ tapTestButton์œผ๋กœ ํ•˜๊ณ  Type์„ UIButton์œผ๋กœ ์„ ํƒํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

 

  • @IBAction
    • ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ํ”ผ์ปค๊ฐ€ ์„ ํƒ๋˜๋Š” ๋“ฑ ํŠน์ • ๊ฐ์ฒด์—์„œ ์›ํ•˜๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ •ํ•ด์ง„ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
  • ์•ก์…˜ ํ•จ์ˆ˜
    • ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ์ด๋ฒคํŠธ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฐ์ฒด
    • AnyObject๋„ ์„ ํƒ ๊ฐ€๋Šฅ

 

 

์•„์›ƒ๋ › ๋ณ€์ˆ˜์™€ ์•ก์…˜ ํ•จ์ˆ˜ ์‚ญ์ œ

์•„์›ƒ๋ › ๋ณ€์ˆ˜์™€ ์•ก์…˜ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„ ์‚ญ์ œํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์†Œ์Šค์ฝ”๋“œ์—์„œ ํ•ด๋‹น ๋ถ€๋ถ„์„ ์‚ญ์ œํ•ด๋„ ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐ์ฒด๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ๋ˆ„๋ฅด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐฝ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ € ์ฐฝ์—์„œ x๋ฅผ ๋ˆŒ๋Ÿฌ ํ•ด์ œ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ์™„๋ฒฝํžˆ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

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

Date Picker  (1) 2022.10.05
UIImageView  (0) 2022.09.28
[UIKit] UITableView  (0) 2022.04.01
[UIKit] UIView(3)  (0) 2022.03.30
[UIKit] UIView(2)  (0) 2022.03.28