SwiftUI/PropertyWrapper/@State

Revision as of 18:42, 17 November 2022 by imported>Fire (使用例)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

@Stateで定義した変数を監視し、状態が変わったときにViewを再描画させたりしたいときに使う。

@State
TypePropertyWrapper
iOS13.0+
iPadOS13.0+
macOS10.15+
MacCatalyst13.0+
tvOS13.0+
watchOS6.0+
Websitedeveloper.apple.com/documentation/swiftui/state/

定義したViewに閉じて使うときは、@Stateを単体で使うが、複数Viewで共有して反映させる場合は、@Binding@EnvronmentObject とか使ったりする。


使用例

isPlayingの初期値は、falaseなので、buttonのisPlaying の判定で"Play" が表示される。 Playボタンを押すと、isPlayingの値をtoggle し、Buttonが再描画され、"Pause"が表示されるようになる。

struct PlayButton: View {
    @State private var isPlaying: Bool = false

    var body: some View {
        Button(isPlaying ? "Pause" : "Play") {
            isPlaying.toggle()
        }
    }
}

SEE ALSO

@Binding, @EnvronmentObject, @ObservedObject