🐷

SwiftUI入門:@Bindingとは?

2023/05/27に公開

SwiftUIでは、データフローは非常に重要な概念です。データフローとは、アプリケーションのデータがどのように流れ、ビューがどのように更新されるかを管理することを指します。このデータフローを管理するためのツールの一つが、@Bindingプロパティラッパーです。

@Bindingとは?

@Bindingは、SwiftUIのプロパティラッパーで、データを格納するプロパティと、データを表示・変更するビューとの間に双方向の接続を確立します。つまり、あるビューが別のビューの状態を変更することを可能にします。

@Bindingの使用例

以下に、@Bindingを使用した簡単な例を示します:

struct ParentView: View {
    @State private var isToggleOn = false

    var body: some View {
        ChildView(isToggleOn: $isToggleOn)
    }
}

struct ChildView: View {
    @Binding var isToggleOn: Bool

    var body: some View {
        Toggle(isOn: $isToggleOn) {
            Text("Toggle")
        }
    }
}

この例では、ParentViewがisToggleOnという状態を持っています。そして、この状態をChildViewに渡しています。ChildViewでは、この状態を@Bindingとして受け取り、Toggleビューで使用しています。これにより、ChildViewのToggleが切り替えられると、ParentViewのisToggleOnの状態も更新されます。

専門用語の説明

  • プロパティラッパー(Property Wrapper): プロパティの振る舞いをカスタマイズするための特殊な構造体またはクラスです。@State, @Binding, @ObservedObjectなどがこれに該当します。

  • @State: SwiftUIのプロパティラッパーで、ビューの状態を管理します。@Stateがマークされたプロパティは、そのビューが所有しており、ビューが再描画されるときに保存されます。

  • ビュー(View): SwiftUIでUIを構築する基本的な要素です。テキスト、ボタン、トグルなど、すべてのUI要素はビューです。

@Bindingは、SwiftUIでのデータフローを理解するための重要なツールです。これを理解することで、より複雑なアプリケーションを効率的に構築することができます

Discussion