-
SwiftUI Data Flow - @Binding을 사용하여 child뷰에서 parent뷰로 데이터 전송SwiftUI 100 레시피/Data Flow 2022. 6. 21. 11:49
AddItemView에서 바인딩으로 데이터를 ContentView로 전송하는 방법
#1. ContentView
import SwiftUI
struct ContentView: View {
@State private var isPresented: Bool = false
@State private var name: String = ""
var body: some View {
VStack(spacing: 10) {
Text(name)
.font(.largeTitle)
Button("추가하기"){
name = ""
isPresented = true
}
}.sheet(isPresented: $isPresented, content: {
AddItemView(name: $name)
})
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
#2. AddItemView
import SwiftUI
struct AddItemView: View{
@Environment(\.presentationMode) var presentationMode
@Binding var name: String
var body: some View{
NavigationView{
Form{
TextField("이름입력", text: $name)
HStack{
Spacer()
Button("제출하기"){
presentationMode.wrappedValue.dismiss()
}
Spacer()
}
}
.navigationTitle("데이터 추가")
}
}
}
struct AddItemView_Previews: PreviewProvider {
static var previews: some View {
AddItemView(name: .constant("홍길동"))
}
}
ContentView 에서 추가 버튼을 누르면 AddItemView가 나타나고 데이터를 입력하면 ContentView에서 데이터를 받아서 표시 'SwiftUI 100 레시피 > Data Flow' 카테고리의 다른 글
SwiftUI Data Flow - 이미지 다운로드 및 디스플레이 (0) 2022.06.22 SwiftUI Data Flow - onReceive modifier를 사용한 Notifications (0) 2022.06.21 SwiftUI Data Flow - onChange modifier를 사용한 state changes (0) 2022.06.21 SwiftUI Data Flow - optional bindings을 취급하는 방법 (0) 2022.06.21 SwiftUI Data Flow - @EnvironmentObject를 사용하여 Global state 적용하기 (0) 2022.06.21