#author("2022-11-16T04:34:52+00:00","default:src128","src128")
&tag(SwiftUI/PropertyWrapper);
*目次 [#z8da1a17]
#contents
*関連ページ [#n88c2da1]
*参考情報 [#ua83d4c0]

-[[SwiftUIのデータ管理 Property Wrapper編:https://blog.personal-factory.com/2021/01/23/how-to-use-propertywrapper-in-swiftui/]]


*Property Wrapperの種類 [#l9739a89]
-@State、@Binding、@StateObject、@ObservedObjectなどデータを管理するためのProperty Wrapperがたくさん存在する


** @State [#b535e418]
-データが値型。データの更新あり。データの発生源がVIewの場合に使用。
-ボタンをタップするとその数字が増える。
#pre{{
struct StateSample: View {
    private var counter = 0
    var body: some View {
        Button(action: {
            self.counter += 1
        }, label: {
            Text("counter is \(counter)")
        })
    }
}

}}

** @Binding [#pd81fb92]
-データが値型。データの更新あり。データの発生源は外部。
#pre{{
struct ParentView: View {
    @State private var counter = 0
    var body: some View {
        ChildView(counter: $counter)
            .frame(width: .infinity)
    }
}
struct ChildView: View {
    @Binding var counter: Int
    var body: some View {
        Button(action: {
            counter += 1
        }, label: {
            Text("\(counter)")
                .font(.title)
        })
        .border(Color.red)
    }
}
}}



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS