점진적 과부하 개발 블로그

Swift Combine을 사용한 데이터 표시 구현 본문

Swift

Swift Combine을 사용한 데이터 표시 구현

지용빡 2022. 6. 18. 19:13
반응형
Swift Combine을 사용한 데이터 표시 구현
@State
import SwiftUI

struct SampleView: View {
//    @State private var currentText = ""
    @State private var isDisabled = true
    
    var body: some View {
//        VStack {
//            TextField("텍스트를 입력해주세요.", text: $currentText)
//            Text(currentText)
//        }
        VStack {
            Toggle(isOn: $isDisabled, label: { Text("버튼을 비활성화 시키겠습니까?") })
            
            Button("qjxms") {}
                .disabled(isDisabled)
        }
    }
}

struct SampleView_Previews: PreviewProvider {
    static var previews: some View {
        SampleView()
    }
}
@Binding
import SwiftUI

struct ParentView: View {
    @State private var isDisabled = true
    
    var body: some View {
        ChildView(isDisabled: $isDisabled)
    }
}

struct ChildView: View {
//    @State private var currentText = ""
    @Binding var isDisabled: Bool // ParentView를 참조하기만 한다. 
    
    var body: some View {
//        VStack {
//            TextField("텍스트를 입력해주세요.", text: $currentText)
//            Text(currentText)
//        }
        VStack {
            Toggle(isOn: $isDisabled, label: { Text("버튼을 비활성화 시키겠습니까?") })
            
            Button("qjxms") {}
                .disabled(isDisabled)
        }
    }
}

struct SampleView_Previews: PreviewProvider {
    static var previews: some View {
        ParentView()
    }
}
@ObservableObject
import SwiftUI

class ButtonModel: ObservableObject { // 다른 곳에서도 활용이 가능한 모델로 정의가 가능하다.
    @Published var isDisabled = true
}

struct ParentView: View {
    @ObservedObject var buttonModel = ButtonModel()
    
    var body: some View {
        ChildView(isDisabled: $buttonModel.isDisabled)
    }
}

struct ChildView: View {
//    @State private var currentText = ""
    @Binding var isDisabled: Bool // ParentView를 참조하기만 한다.
    
    var body: some View {
//        VStack {
//            TextField("텍스트를 입력해주세요.", text: $currentText)
//            Text(currentText)
//        }
        VStack {
            Toggle(isOn: $isDisabled, label: { Text("버튼을 비활성화 시키겠습니까?") })
            
            Button("qjxms") {}
                .disabled(isDisabled)
        }
    }
}

struct SampleView_Previews: PreviewProvider {
    static var previews: some View {
        ParentView()
    }
}

 

반응형

'Swift' 카테고리의 다른 글

Swift 콜렉션 타입(Collection Types)  (0) 2022.06.23
SwiftUI Alert 알아보기  (0) 2022.06.21
SwiftUI NavigationView 알아보기  (0) 2022.06.17
Swift HStack  (0) 2022.06.12
Swift List, LazyHStack 차이점 알아보기  (0) 2022.06.10