๐จ ์ด์
์ฑ ์ ๋ฐ๋ผํ๋ค ๋ณด๋, ๋ฒ์ ์ด ๋ง์ง ์์์ ๊ทธ๋ ๊ตฌ๋ ํ๊ณ ๋์ด๊ฐ๋ ๋ถ๋ถ ์ค, ๊ทธ๋์๋ ์๋๋ ๋ถ๋ถ์ด ์์๋ค.
์ฑ ์์ 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!
}
}
๐ฑ ๊ฒฐ๊ณผ
๐ ์ ๋ฆฌ
swift๋ฅผ ํ๋ฉด์ ๊ฐ์ฅ ๋๋๋ ์ ์ค ํ๋๋, ๋ณ์์ ํจ์๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ด์๋ค.
Storyboard์์ ๊ฐ์ฒด๋ฅผ ๋์ด ์ฝ๋ ํธ์ง๊ธฐ๋ก ์ฐ๊ฒฐํ๋ฉด, ์๋์ผ๋ก ์ผ๋ถ ์ฝ๋๊ฐ ์์ฑ๋๋ค.
๋ํ ์ด๋ฆ๊ณผ Connection, type์ ์ง์ ํ ์ ์๋ค๋ ๊ฒ...
๊ต์ฅํ ์ ์ ํ๋ฉด์๋ ์ถฉ๊ฒฉ์ ์ด๋ฉด์๋ ํธ๋ฆฌํ๋ค. ์ฝ๊ฐ ์ฌ๋ฏธ์๊ธฐ๋ ํ๋ค..๐ซ
'๐ Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swift] xcode์์ ์์ ํ๋ ํธ ๋ณด๊ธฐ (2) | 2023.10.01 |
---|---|
Swift Data์ ๋ํ์ฌ [๊ณต์๋ฌธ์ ๊ธฐ๋ฐ] (0) | 2023.07.04 |
[swiftUi] Text align ์์น ์ ํ๊ธฐ (0) | 2023.06.03 |
[swift] ๋์์ธ ํจํด์ด๋ !! - by ์ผ๊ณฐ๐ป (0) | 2023.04.10 |
[swift] The Basics (๊ณต์๋ฌธ์ ์ ๋ฆฌ) (0) | 2023.02.13 |