๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
iOS/Swift

[iOS] ์”ฌ(Scene)๊ณผ Class ์—ฐ๊ฒฐ

by Callie_ 2023. 7. 29.

 

 

๐Ÿ”–  Cocoa Touch Framework 

 

- iOS๋‚˜ OS ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•ด์•ผํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ๊ทธ๋žจ์„ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ. (์• ํ”Œ ์ตœ์ ํ™” & ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ์˜ ํ”„๋ ˆ์ž„์›Œํฌ) -> iOS ์•ฑ์„ ๋งŒ๋“œ๋Š”๋ฐ ํ•„์š”ํ•œ ๊ธฐ์ดˆ์ ์ธ ํˆด 

- UIKit = ๋Œ€ํ‘œ์ ์ธ UI ๋„๊ตฌ : iOS ํ™˜๊ฒฝ์˜ ์”ฌ ๊ตฌ์„ฑ์—์„œ ์œ ์ € ์ธํ„ฐ์ŠคํŽ˜์ด์Šค์—์„œ ๋™์ผ์„ฑ์ด ์กด์žฌํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฐ”๋กœ ๋™์ผํ•œ ์œ ์ € ์ธํ„ฐ์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์”ฌ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ. 

  • UIKit ์•ˆ์— UILabel๊ณผ UIButton์ด ์žˆ๊ณ , ์—ฌ๊ธฐ์— UIView๊ฐ€ ์ƒ์†๋˜์–ด ์žˆ๋‹ค.
    • UILabel : text, textColor, textAligment .... 
    • UIButton : SetTitle, SetTitleColor...
    • UIView : layer(cornerRadius, borderColor, borderWidth...), backgroundColor....

** swiftUI ๋Š” iOS 13 ์ด์ƒ๋ถ€ํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ. ๋ชจ๋“  ์• ํ”Œ ํ”Œ๋žซํผ๊ณผ ํ˜ธํ™˜์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ž์œผ๋กœ ์‚ฌ์šฉ๋ฅ ์ด ๋” ๋†’์•„์งˆ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ ์ค‘.

 

 

๐Ÿ”–  ์”ฌ(Scene)๊ณผ Class ์—ฐ๊ฒฐํ•˜๊ธฐ

** Scene ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” ํ™”๋ฉด, Logic์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” ํ™”๋ฉด์ด ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ์ž‘์—…์ด๋‹ค.

 

 

โš’๏ธ ํƒฌํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑํ•˜๊ธฐ

 

[๊ธฐ๋ณธ์„ธํŒ…]

 

1. ๋‹จ์ถ•ํ‚ค (Command + N) 

 

- Cocoa Touch Class ์„ ํƒํ•˜๊ธฐ.

 

** Swift File์„ ์„ ํƒํ•˜๋ฉด ์•„์ฃผ ๊ธฐ์ดˆ์ ์ธ ๊ฒƒ(foundation)๋ถ€ํ„ฐ ์ˆ˜๋™์ ์œผ๋กœ ๋‚ด๊ฐ€ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

 

 

2. ์ •๋ณด ์ž…๋ ฅ ํ•ด์ฃผ๊ธฐ.

- class๋Š” ๋‚ด๊ฐ€ ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ์—ฐ๊ฒฐํ•˜๋ ค ํ•˜๋Š” ControllerView๋ฅผ ๊ณ ๋ คํ•ด์„œ ์ด๋ฆ„์„ ์ง€์–ด์ค€๋‹ค.

- Subclass of ๋Š” ์ƒ์†๋ฐ›๋Š” ์Šˆํผํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์Šคํ† ๋ฆฌ๋ณด๋“œ์— ์ถ”๊ฐ€ํ•œ ViewController์™€ ๊ฐ™์€ ์ข…๋ฅ˜์—ฌ์•ผ ํ•จ. 

 

 

 

3. Group๊ณผ Targets ์„ค์ •

 

 

- Group์€ ํด๋”๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ๊ผญ ํ™•์ธํ•  ๊ฒƒ. -> ํด๋”๋กœ ์ง€์ •๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด, ๋‚˜์ค‘์— ์ €์žฅ ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ ๋˜๋Š” ๋“ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.

 

 

 

4. ์—ฐ๊ฒฐํ•˜๊ธฐ

 

 

  • VC(=ViewController) ์ƒ๋‹จ ์ฒซ๋ฒˆ์งธ ์•„์ด์ฝ˜(์„ ํƒ์‹œ ํŒŒ๋ž€์ƒ‰์ด ๋จ)์„ ํ†ตํ•ด ํ•ด๋‹น VC๋ฅผ ์„ ํƒ ํ›„ custom class (์ธ์ŠคํŽ™ํ„ฐ ์˜์—ญ ์˜ค๋ฅธ์ชฝ์—์„œ ๋„ค๋ฒˆ์งธ)์—์„œ Cocoa Touch Class์—์„œ ๋งŒ๋“ค์—ˆ๋˜ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ฐพ์•„ ๋งค์นญ ์‹œ์ผœ์ฃผ๊ธฐ. ๋ณดํ†ต ์ฒซ ๊ธ€์ž๋งŒ ์ณ๋„ ์ž๋™์™„์„ฑ ๋˜์ง€๋งŒ, ํ™•์ธ ํ•  ๊ฒƒ.
  • Inherit Module From Target ์ฒดํฌ.

์œ„ ๊ณผ์ •์„ ๋งˆ์ณ์•ผ๋งŒ IBOulet ๊ณผ IBAction (๋ณ€์ˆ˜)๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค!

 

 

 

[Scene ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•]

 

 

 

1.

 

 

Scene ์—ฐ๊ฒฐ์€ ๋น„๊ต์  ๊ฐ„๋‹จํ•˜๋‹ค.

 

๋ ˆ์ด๋ธ” ๋˜๋Š” ๋ฒ„ํŠผ๋ฅผ ์„ ํƒํ•œ ํ›„ ๋งˆ์šฐ์Šค์˜ ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  ์ปค์„œ๋ฅผ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ ์˜์—ญ์œผ๋กœ ๋Œ์–ด๋†“์œผ๋ฉด ์—ฐ๊ฒฐ๋œ๋‹ค. ์ด๋•Œ Type ์„ ํƒ์ด ์ž˜ ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค. ์ด๋ฆ„์„ ์ •ํ•  ๋• ์ฒซ๊ธ€์ž๋Š” ์†Œ๋ฌธ์ž๋กœ ์“ฐ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. (๋Œ€๋ฌธ์ž๋กœ ์“ฐ๋ฉด apple์ด ์ •ํ•ด๋‘” ๊ณ ์œ ํ•œ ํ‚ค์™€ ํ˜ผ๋™๋  ๊ฐ€๋Šฅ์„ฑ ๋†’์Œ)

 

 

 

2.

 

scene ์—ฐ๊ฒฐ์ด ์ž˜ ๋˜์–ด ์žˆ๋‹ค๋ฉด VC ์˜์—ญ์—์„œ @IBAOutlet ์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

IBOulet → IB = Interface Builder๋ž€ ์˜๋ฏธ๋กœ, ์ด ์ž‘์—…์€ ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ์ผ์–ด๋‚˜๊ณ  ์žˆ๋‹ค! ๋ž€ ์˜๋ฏธ์™€ ๊ฐ™๋‹ค.

 

**๋ณดํ†ต์˜ ๊ฒฝ์šฐ ์”ฌ์—์„œ ์ž˜ ์—ฐ๊ฒฐ์ด ๋˜์ง€๋งŒ, ์•ˆ ๋  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋Ÿด ๋• ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์ด๋‚˜ ๋””๋ฒ„๊น… ์˜์—ญ์—์„œ ์—ฐ๊ฒฐ์ด ๋˜์ง€ ์•Š์•„ ์ž‘๋™์ด ์•ˆ ๋˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Ÿด ๋•Œ ํ•ด๊ฒฐ๋ฐฉ์•ˆ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

 

 

 

 

์šฐ์„ , ์—ฐ๊ฒฐ์˜ ์œ ๋ฌด๋ฅผ ํ™•์‹คํžˆ ํŒŒ์•…ํ•ด์•ผํ•œ๋‹ค. ์ธ์ŠคํŽ™ํ„ฐ์˜ (triggered) segues ์˜์—ญ์— ํ•ด๋‹น ์•„์šธ๋ ›์ด ์—†์œผ๋ฉด ์—ฐ๊ฒฐ์ด ๋˜์ง€ ์•Š์•˜์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 

viewcontroller ์˜์—ญ์—์„œ ์„ ํƒ๋˜์ง€ ์•Š์€ outlet์˜ ํ™”์‚ดํ‘œ ๋ถ€๋ถ„์„ ํด๋ฆญ + ๊ทธ๋Œ€๋กœ ์˜ค๋ฅธ์ชฝ ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ์ฑ„๋กœ ์—ฐ๊ฒฐํ•˜๋ ค๋˜ ๋ทฐ๊ฐ์ฒด ๋ถ€๋ถ„์œผ๋กœ ์—ฐ๊ฒฐํ•ด์ฃผ๋ฉด ํ•ด๊ฒฐ๋œ๋‹ค. ์ฐธ๊ณ ๋กœ, IBAction ์—ฐ๊ฒฐ ๊ณผ์ •๋„ ๋˜‘๊ฐ™๋‹ค.