ram2 ๐Ÿš—

Doit [swift] ์ฒซ์งธ ๋งˆ๋‹น ๋ณธ๋ฌธ

๐ŸŽ Swift

Doit [swift] ์ฒซ์งธ ๋งˆ๋‹น

coram22 2023. 2. 28. 15:54
728x90
๋ฐ˜์‘ํ˜•

๐Ÿšจ ์ด์Šˆ

์ฑ…์„ ๋”ฐ๋ผํ•˜๋‹ค ๋ณด๋‹ˆ, ๋ฒ„์ „์ด ๋งž์ง€ ์•Š์•„์„œ ๊ทธ๋ ‡๊ตฌ๋‚˜ ํ•˜๊ณ  ๋„˜์–ด๊ฐ”๋˜ ๋ถ€๋ถ„ ์ค‘, ๊ทธ๋ž˜์„œ๋Š” ์•ˆ๋˜๋Š” ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค.

์ฑ…์—์„œ storyboard๋ฅผ ์–ธ๊ธ‰ํ•˜๊ณ , ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ƒ๊ฐ๋ณด๋‹ค ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

์ด ๋ถ€๋ถ„์€ ์ฒ˜์Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, User interface ์„ค์ •์„ 'SwiftUI''๊ฐ€ ์•„๋‹Œ, 'Storyboard'๋กœ ์„ค์ •ํ•ด์•ผ ํ–ˆ๋‹ค.

 

๊ทธ๋ ‡๊ฒŒ ํ•˜๋‹ˆ, ์ด๋ฆ„์€ ์กฐ๊ธˆ ๋‹ค๋ฅด์ง€๋งŒ, storyboard๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค !

 

 

๐Ÿ’ป ๋ฌธ๋ฒ• ์ •๋ฆฌ

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

๊ฐ์ฒด์— ๋Œ€ํ•œ ์†์„ฑ์„ ์ง€์ •ํ•  ๋•Œ ์—ฐ๊ฒฐ
@IBOutlet weak var lblHello: UILabel!

@IBOutlet : @IBOutlet์œผ๋กœ ์ •์˜๋œ ๋ณ€์ˆ˜๋ฅผ ์•„์šธ๋ › ๋ณ€์ˆ˜๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

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

var lblHello : ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ var ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ. ๊ทธ ๋’ค์— ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์ง€์ •ํ•˜์—ฌ ์„ ์–ธํ•œ๋‹ค.

UILabel! : ์„ ์–ธํ•˜๊ณ ์ž ํ•˜๋Š” ๋ณ€์ˆ˜ ํƒ€์ž…์„ ๋‚˜ํƒ€๋ƒ„.

  • ์œ„ ์ฝ”๋“œ์—์„œ๋Š” ๋ ˆ์ด๋ธ” ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฏ€๋กœ UILabel ํด๋ž˜์Šค ํƒ€์ž… ์„ ํƒ. (UI=User Interface)

strong / weak : ์•„์›ƒ๋ › ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ๋‚˜ํƒ€๋‚˜๋Š” ํŒ์—… ์ฐฝ์˜ 'Storage' ์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ.

  • ๋ฉ”๋ชจ๋ฆฌ ํšŒ์ˆ˜ ์ •์ฑ…์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ‚ค์›Œ๋“œ
  • ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•œ ์•„์›ƒ๋ › ๋ณ€์ˆ˜๋Š” strong ์‚ฌ์šฉ. (default)
  • weak๋Š” ๋ณ€์ˆ˜ ์ •์˜ ์•ž์— ์ถ”๊ฐ€๋œ๋‹ค.
  • strong์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ, ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ๋˜์ง€ ์•Š์ง€๋งŒ, weak๋Š” ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋”๋ผ๋„ ์‹œ์Šคํ…œ์ด ์ž„์˜์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Œ.
  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ด์Šˆ ๋•Œ๋ฌธ์— ๋‘ ๊ฐ€์ง€ ์ •์ฑ…์„ ์‚ฌ์šฉ.
    • strong์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ผ๋ฆฌ ์ƒํ˜ธ ์ฐธ์กฐํ•˜๋Š” ์ผ์ด ์ƒ๊ธธ ๊ฒฝ์šฐ, ์•ฑ์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ฐœ์ƒ.
    • ์ด๋Ÿฐ ๊ฒฝ์šฐ, ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ weak๋กœ ์ง€์ •ํ•˜๋ฉด, ์‹œ์Šคํ…œ์—์„œ ์ž„์˜ ์ œ๊ฑฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ƒํ˜ธ ์ฐธ์กฐํ•  ๋•Œ๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฉ”๋ชจ๋ฆฌ ์‚ญ์ œ๋  ์ˆ˜ ์žˆ์Œ.

 

 

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

๊ฐ์ฒด์— ์ด๋ฒคํŠธ๋ฅผ ๋„ฃ๊ณ  ์‹ถ์„ ๋•Œ ์—ฐ๊ฒฐ
@IBAction func btnSend(_ sender: UIButton) {
        lblHello.text = "Hello, " + txtName.text!
    }

@IBAction : @IBAction์œผ๋กœ ์ •์˜๋œ ํ•จ์ˆ˜๋ฅผ ์•ก์…˜ ํ•จ์ˆ˜๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

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

func btnSend : ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ func ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„ ์–ธํ•œ๋‹ค.

(_ sender: UIButton) : ์•ก์…˜ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ์ด๋ฒคํŠธ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฐ์ฒด. 

  • ์—ฌ๊ธฐ์—์„œ๋Š” ๋ฒ„ํŠผ ๊ฐ์ฒด์—์„œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํ•ด๋‹น ์•ก์…˜ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ๊ฒƒ์ด๋ฏ€๋กœ UIButton ํด๋ž˜์Šค ํƒ€์ž… ์„ ํƒ.

lblHello.text : ๋ ˆ์ด๋ธ” ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์†์„ฑ ์ค‘ ํ…์ŠคํŠธ ๋‚ด์šฉ์„ ์˜๋ฏธํ•˜๋Š” ์†์„ฑ.

txtName.text! : ํ…์ŠคํŠธํ•„๋“œ ๊ฐ์ฒด๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ์†์„ฑ ์ค‘ ํ…์ŠคํŠธ ๋‚ด์šฉ์„ ์˜๋ฏธํ•˜๋Š” ์†์„ฑ.

  • ๋์— ๋ถ™๋Š” !๋Š” ์˜ต์…”๋„ ๋ณ€์ˆ˜์˜ ๊ฐ•์ œ ์–ธ๋ž˜ํ•‘์„ ์˜๋ฏธ
  • ์Šคํ„ฐ๋””์—์„œ๋Š” !๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๊ณ  ํ–ˆ๋‹ค...

 


 

๐Ÿ“ swift์—์„œ๋Š” ๋ฌธ์žฅ ๋์— ';' ์ƒˆ๋ฏธ์ฝœ๋ก ์„ ๋ถ™์ด์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ๋ถ™์ธ๋‹ค๊ณ  ํ•ด์„œ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง„ ์•Š๋Š”๋‹ค ^^

๐Ÿ“ ์ƒ์ˆ˜์™€ ๋ณ€์ˆ˜, ํ•จ์ˆ˜, ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„ ์ง€์ • ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์Œ
  • ์˜ˆ์•ฝ์–ด๋‚˜ ํ‚ค์›Œ๋“œ๋กœ ๋“ฑ๋ก๋œ ๋‹จ์–ด๋Š” ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ
  • ์ด๋ฆ„์—์„œ ์–ด๋–ค ์—ญํ• ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ.
  • ๋ช…์‚ฌ+๋™์‚ฌ ๋˜๋Š” ์ „์น˜์‚ฌ๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด๋ฅผ ์—ฐ๊ฒฐํ•ด์„œ ์‚ฌ์šฉ
  • ํด๋ž˜์Šค์˜ ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘
  • ๋ณ€์ˆ˜, ์ƒ์ˆ˜, ๋ฉ”์„œ๋“œ๋Š” ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘

 

 

์ด๋กœ์จ ์ฒซ์งธ ๋งˆ๋‹น ๋ !!

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var lblHello: UILabel!
    @IBOutlet weak var txtName: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    
    @IBAction func btnSend(_ sender: UIButton) {
        lblHello.text = "Hello, " + txtName.text!
    }
}

 

๐Ÿ“ฑ ๊ฒฐ๊ณผ

 

 

 

 

 

728x90

 

 

๐ŸŽ ์ •๋ฆฌ

swift๋ฅผ ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๋†€๋ž๋˜ ์  ์ค‘ ํ•˜๋‚˜๋Š”, ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค.

Storyboard์—์„œ ๊ฐ์ฒด๋ฅผ ๋Œ์–ด ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ๋กœ ์—ฐ๊ฒฐํ•˜๋ฉด, ์ž๋™์œผ๋กœ ์ผ๋ถ€ ์ฝ”๋“œ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

๋˜ํ•œ ์ด๋ฆ„๊ณผ Connection, type์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ...

๊ต‰์žฅํžˆ ์‹ ์„ ํ•˜๋ฉด์„œ๋„ ์ถฉ๊ฒฉ์ ์ด๋ฉด์„œ๋„ ํŽธ๋ฆฌํ–ˆ๋‹ค. ์•ฝ๊ฐ„ ์žฌ๋ฏธ์žˆ๊ธฐ๋„ ํ–ˆ๋‹ค..๐Ÿซ 

 

728x90
๋ฐ˜์‘ํ˜•