sladuf
200
sladuf
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (83)
    • ๐Ÿ“š Programming (32)
      • Swift (13)
      • JAVA (2)
      • Python (6)
      • SQL (6)
      • Web (5)
    • ๐Ÿ“ฑ iOS (25)
      • Base (7)
      • SwiftUI (9)
      • UIKit (7)
      • ์ธ๊ฐ• & ์ฑ… (2)
    • ๐Ÿ”— Algorithm (20)
      • Python (12)
      • Swift (3)
      • Tip (5)
    • ๐Ÿ—‚ ETC (6)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • Swift
  • ์Šค์œ„ํ”„ํŠธ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

๊ธ€์“ฐ๊ธฐ ์„ค์ •
hELLO ยท Designed By ์ •์ƒ์šฐ.
sladuf

200

[SwiftUI] ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ (1/5) @State
๐Ÿ“ฑ iOS/SwiftUI

[SwiftUI] ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ (1/5) @State

2021. 10. 11. 20:45

 

 

 

๋ฐ์ดํ„ฐ๋ฐ”์ธ๋”ฉ

๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ(data binding)์€ ์ œ๊ณต์ž์™€ ์†Œ๋น„์ž๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์›๋ณธ์„ ๊ฒฐํ•ฉ์‹œ์ผœ ์ด๊ฒƒ๋“ค์„ ๋™๊ธฐํ™”ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.

๋ผ๊ณ  ์œ„ํ‚ค๋ฐฑ๊ณผ๊ฐ€ ๋งํ•˜๋Š”๋ฐ, ์‰ฝ๊ฒŒ๋งํ•ด

SwiftUI์—์„œ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์€ view์— ๋ณด์—ฌ์ค„ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์ž‘์—…์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฐ”์ธ๋”ฉํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜๋Š” ๋‹ค์–‘ํ•˜๊ณ  ๊ทธ ์šฉ๋„๊ฐ€ ๋‹ค ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”์ธ๋”ฉ ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค.

 

 

IOS ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ swift์—์„œ ์ตํžˆ ์‚ฌ์šฉํ•˜๋˜๋Œ€๋กœ ํ”„๋กœํผํ‹ฐ๋ฅผ ์„ ์–ธํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š”๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ ์ด์œ ์™€ ๋Œ€์ฒด ํ‚ค์›Œ๋“œ์ธ @State์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž

์™œ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š”๊ฐ€?

์•„๋ž˜ ์ฝ”๋“œ๋Š” ๊ธฐ๋ณธ์ ์ธ ContentView ํ˜•ํƒœ๋กœ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด str์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์•„๋ž˜ ์ฝ”๋“œ๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

struct ContentView: View {
    var str = "A"
    
    var body: some View {
        VStack{
            Text(str)
            Button("B๋กœ ๋ณ€๊ฒฝ"){
                str = "B"
            }
        }
    }
}

swiftUI์—์„œ View๋Š” struct๋กœ ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ์กฐ์ฒด๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๊ตฌ์กฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์—  ๋‚ด๋ถ€์—์„œ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋ฏ€๋กœ ์—๋Ÿฌ๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค !!

 

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด @State๊ฐ€ ํ•„์š”ํ•œ๋ฐ์š”,

@State

SwiftUI์—์„œ ๊ฐ’์„ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” ์–ด์ฉŒ๊ตฌ ์ €์ฉŒ๊ตฌ ๋ผ๊ณ  ๋˜์–ด ์žˆ๋Š”๋ฐ,

@State๋Š” ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์„ ๋ณ€ํ™”ํ•  ์ˆ˜ ์žˆ๊ณ  ๋ณ€ํ•  ๋•Œ ๋งˆ๋‹ค View๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํผํ‹ฐ ์•ž์— @State๋งŒ ๋ถ™์—ฌ์ฃผ๋ฉด ๋จ

@State var str = "A"

๐Ÿ’ก @State๋Š” private์ด๊ณ  ๋‹ค๋ฅธ View์™€ ๊ณต์œ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

์œ„์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋˜ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋ฉด,

struct ContentView: View {
    @State var str = "A"
    
    var body: some View {
        VStack{
            Text(str)
            Button("B๋กœ ๋ณ€๊ฒฝ"){
                str = "B"
            }
        }
    }
}

 

์™ผ : ๋ฒ„ํŠผ ํด๋ฆญ์ „ / ์˜ค : ๋ฒ„ํŠผ ํด๋ฆญํ›„

 

Binding<String>

์ฃผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ์ง์ ‘ ์ ‘๊ทผํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (ex. Toggle, TextEditer, TextField ...)

์˜ˆ์‹œ๋กœ ํ† ๊ธ€ ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•  ๋•Œ isOn ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋Œ€ํ•ด์„œ Binding ๊ฐ’์„ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ”์ธ๋”ฉํ•  ํ”„๋กœํผํ‹ฐ ์•ž์— $(๋‹ฌ๋Ÿฌ) ํ‘œ์‹œ๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

struct ContentView: View {
    
    @State var toggle = false
    
    var body: some View {
        VStack{
            Text(toggle.description)
            Toggle("ํ† ๊ธ€๋ฒ„ํŠผ", isOn: $toggle)
        }
    }
}

 

 

 

 

 

์ €์ž‘์žํ‘œ์‹œ

'๐Ÿ“ฑ iOS > SwiftUI' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋””๋ฐ”์ด์Šค ํ™”๋ฉด๊ณ ์ • portrait only  (0) 2022.07.25
[SwiftUI] Grid์†์„ฑ  (0) 2022.07.05
URLSession์„ ํ†ตํ•ดJSON ๊ฐ€์ ธ์˜ค๊ธฐ (2)  (0) 2022.07.04
URLSession์„ ํ†ตํ•ดJSON ๊ฐ€์ ธ์˜ค๊ธฐ (1)  (0) 2022.06.28
Auto Layout 1 [Why?]  (0) 2022.05.31
    '๐Ÿ“ฑ iOS/SwiftUI' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [SwiftUI] Grid์†์„ฑ
    • URLSession์„ ํ†ตํ•ดJSON ๊ฐ€์ ธ์˜ค๊ธฐ (2)
    • URLSession์„ ํ†ตํ•ดJSON ๊ฐ€์ ธ์˜ค๊ธฐ (1)
    • Auto Layout 1 [Why?]
    sladuf
    sladuf

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”