Swift5で新しく追加された機能の一つに「@State」修飾子がある。

以下のように@Stateをつけて変数を宣言するとSwiftUIによる監視モードに入り、宣言された変数の値が変更されると自動的にViewの更新が走るようになっている。

@State var on = false

サンプルコード

実際のサンプルコードを見てみよう。

以下のサンプルでは、@State修飾子をつけてプロパティ「on」を宣言し、SwiftUIのボタン押下によりonの中身を切り替えている。

import SwiftUI

struct ContentView: View {
    @State private var on = false
    
    var body: some View {
        VStack {
            Button(action: {
                self.on.toggle()
            }) {
                Text("Toggle Button, tap here")
                    .foregroundColor(Color.black)
            }
            
            if on {
                Text("Good Morning")
                    .foregroundColor(Color.red)
            }
        }
        
    }
}

このアプリを実行し、ボタンを押すと監視状態にある「on」の値が更新され、Viewが再読み込みされ画面が更新される。