난 iOS개발자/SwiftUI (4) 썸네일형 리스트형 Alert struct ContentView: View { @State private var showing = false var body: some View { VStack { Button("Alert 띄우기") { showing = true } .alert("메시지", isPresented: $showing) { Button("OK", role: .cancel) { } } } } } @Binding 변수 포함된 View의 PreviewProvider 사용 @Binding var name: String 과 같은 변수가 있는 뷰의 경우 struct ContentView: View { @Binding var name: String var body: some View { ZStack { Text(name) } } } struct ContentView_PreviewProvider: { static var previews: some View { ContentView(name: .constant("철수")) } } 위 처럼 쓰면 프리뷰를 볼 수 있다. .constnat는 Binding을 생성하는데 " 뷰가 다른 값을 어떻게 나타내는지 확인하기 위해 ``PreviewProvider``를 사용할 때 유용할 수 있습니다. 어떻게 다른 값을 나타내는지 확인할 때 유용합니다... [SwiftUI] View와 ViewModel (ObservableObject, @Published, @ObservedObject) @State에 이은 두번째. ObservableObject와 @ObservedObject는 SwiftUI에서 ViewModel구조를 사용할때 유용하다. ObservableObject를 채택하면 클래스의 내부속성의 변경사항을 구독자에게 전달할수 있는 객체가 된다. 오로지 클래스에만 사용이 가능하다. class SomeViewModel: ObservableObject { @Published var myName: String = "" } 그리고 뷰 모델에서 변경 가능한 속성을 선언하기 위해 @Published 속성 래퍼를 사용해야 한다. @Published는 ObservableObject 프로토콜을 준수하는 클래스에 속성을 감시할수 있도록 하는 프로퍼티 래퍼다. SwiftUI를 사용한 MVVM구조에서 View.. [SwiftUI] @State @State는 가변 데이터를 나타내는 속성 래퍼이다. @State를 변수 앞에 배치하면 SwiftUI는 해당 속성을 추적하고 , 상태가 변경될 때 마다 새로운 작업(뷰를 다시 그리는)을 할 수 있다. 이를 통해 뷰는 사용자 상호작용으로 데이터 모델의 변경에 즉각적인 UI업데이트 흐름을 만들 수 있다. @State var userTouchCount: Int @State 속성 래퍼가 사용되는 뷰에서 값을 변경하려면, 해당 뷰 내부에서만 변경해야 한다. 예를 들어 버튼이나 텍스트 필드를 통해 값을 변경하는 그런것이다. 일반적으로 아래와 같이 사용한다. struct ContentView: View { @State var myName: String = "" var body: some View { VStack() .. 이전 1 다음