SWIFTUI/Grammar

SwiftUI : #2 ObservedObject '클릭시 값 증가'

서근 2021. 2. 14. 18:01
반응형

ObservedObject에 관한 첫 번째 게시글을 보시려면 여기를 클릭해주세요.

 

ObservedObject 

저번 게시물에서는 ObservedObject를 이용해서 Timer를 만들어 봤습니다.  이번에는 다른 예시를 통해서 한번 더 확실하게 배워보도록 하겠습니다. :)

 

저번 timer를 만들 때처럼 새로운 Swift 파일을 만들어주고 'UserSetting'으로 정해줬습니다

//UserSetting View

import Foundation
import SwiftUI
import Combine

class UserSetting: ObservableObject{
    @Published var score: Int = 0
}

score을 정수 0으로 정해줬고, 버튼을 클릭할 때마다 score이 올라가도록 하려고 합니다.

//ContentView

import SwiftUI

struct ContentView: View {
    @ObservedObject var userSetting = UserSetting()
    
    var body: some View {
        VStack {
        Text("\(self.userSetting.score)")
            .font(.largeTitle)
        }
    }
}

이렇게 캔버스에 스코어를 표시하는데 까지는 성공했습니다. 이제 버튼을 만들고 그 버튼을 클릭할 때마다 스코어가 증가할 수 있게 만들어 보겠습니다,

        VStack {
        Text("\(self.userSetting.score)")
            .font(.largeTitle)
            Button("클릭시 Score 증가") {
                self.userSetting.score += 1
            }
        }

실제로 Score value가 변경되면 뷰를 자동으로 업데이트하게 되어서 화면이 구성되게 된 것입니다.

 

이렇게 ObservableObject, ObservedObject, Published에 대해 알아봤습니다.

 

다음 게시물에서는 environment가 무엇인지 알아보도록 하겠습니다.

 

읽어주셔서 감사합니다🤟

 

다음 게시글👇🏻

 

SwiftUI : EnvironmentObject '뷰간에 데이터 공유'

앞 게시물 ObservedObject를 먼저 보고 오시는것을 추천합니다. 이번 게시물에서는 앞에서 썼던 코드를 재사용 합니다. 이번에는 EnvironmentObject에 대해 알아보도록 하겠습니다. EnvironmentObject 앱의 많

seons-dev.tistory.com

참고하면 좋은 게시글👇🏻

 

SwiftUI : @State, @ObservedObject / Struct를 Class로

@State -왜 @State 는 오직 Struct 에서만 작동을 하는가? 앞전 게시물에서 수없이 나왔던 @State 와 Struct에 대해서 알아보겠습니다. SwiftUI에서 가장 기본이되고 많이 사용하는 것들이니 꼭 알아두시길

seons-dev.tistory.com