[iOS] SwiftUI - @State, @Binding
SWIFTUIとmvvmを体験する過程で得た2つのProperty Wrapperをまとめます!
UImitを使用する場合、変数が変化した場合は、これらの変化を直接観察して反映する必要がありますが、SWIFTUIはプロパティパッケージを使用してこれらのタスクの自動化を実現します.が変化した場合、属性パッケージ は、変数の値が読み取りまたは書き込み可能であることを示す. SWIFTUI管理Stateの属性として宣言されたリポジトリ State値が変更すると、ビューはその値の外観を無効にし、ボディ値 を再計算します.状態変数値が変更するとビューが再登録されるため、常に最新値 がある.状態インスタンス自体は値ではなく、読み書き値 である.は、現在のビューUIの特定の状態を記憶するために作成するものであり、通常、プライベート である.2 を指定できます.
@Stateとして宣言された属性を別のビューで使用する場合は、@Bindingを使用します.使用する場合、前に
@Stateプロパティとして宣言されたプロパティを異なるビューで使用する場合は、@Bindingプロパティを使用します.は、$の前がバインド変数 であることを示す.
外部からのアクセスが必要ななので、専用X
数値を増やしてsheetを開き、簡単なアプリケーションで適用します.
まず結果を見てみましょう.
State
UImitを使用する場合、変数が変化した場合は、これらの変化を直接観察して反映する必要がありますが、SWIFTUIはプロパティパッケージを使用してこれらのタスクの自動化を実現します.
@State
プロパティを使用してpropertyの初期値を指定する場合は、他の値に再割り当てすることはできません.@Binding
変数でのみBinding
@Stateとして宣言された属性を別のビューで使用する場合は、@Bindingを使用します.使用する場合、前に
$
を使用してBining変数を表します.@Stateとして宣言された属性が変更された場合、@Binding変数はその属性を認識し、その値に伴うビューの変化を直ちに反映します.@Stateプロパティとして宣言されたプロパティを異なるビューで使用する場合は、@Bindingプロパティを使用します.
外部からのアクセスが必要な
例
数値を増やしてsheetを開き、簡単なアプリケーションで適用します.
まず結果を見てみましょう.
初めまして
struct ContentView: View {
@State var presenting = false
@State private var number : Int = 167
var body: some View {
VStack {
Text("Number is \(number)")
.fontWeight(.semibold)
.font(.system(size: 30))
.padding(.bottom, 20)
Button(action: {
self.number += 1
}, label: {
Text("Add")
.foregroundColor(.white)
.font(.system(size: 25))
.fontWeight(.bold)
.padding(10)
})
.background(Color.green)
.padding(50)
Button(action: {
self.presenting = true
}, label: {
Text("Move to Check")
.foregroundColor(.white)
.font(.system(size: 25))
.fontWeight(.bold)
.padding(10)
})
.background(Color.blue)
.padding(50)
.sheet(isPresented: self.$presenting){
DetailView(number:
self.$number)
}
}
}
}
ビューの確認
struct DetailView: View {
@Binding var number : Int
var body: some View {
Text("Number : \(number)")
}
}
@Stateと宣言された属性numberの値が変化した場合、この変化はDeatilViewで@Bindingによって自然にビューに反映されていることがわかります!Reference
この問題について([iOS] SwiftUI - @State, @Binding), 我々は、より多くの情報をここで見つけました https://velog.io/@nnnyeong/iOS-SwiftUI-State-Bindingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol