티스토리 뷰

반응형
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
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함