@State
是 SwiftUI 中的一個屬性包裝器(property wrapper),它的主要作用是為檢視的私有狀態提供儲存。使用 @State
可以讓 SwiftUI 管理檢視的狀態,並在狀態改變時自動更新檢視。這對於構建響應式的使用者介面至關重要。
以下是 @State
的幾個關鍵點:
-
私有狀態管理:
@State
應該用於檢視內部的狀態管理。這意味著這個狀態是私有的,只有當前檢視可以訪問和修改它。 -
值型別:
@State
適用於簡單的值型別(如String
、Int
、Bool
等)的儲存。當狀態改變時,SwiftUI 會重新繪製依賴於這個狀態的檢視部分。 -
雙向繫結:透過使用
$
字首,@State
變數可以實現與 UI 控制元件的雙向繫結。這意味著 UI 控制元件可以顯示狀態的當前值,並且當使用者與控制元件互動(如輸入文字、切換開關等)時,狀態會自動更新。 -
觸發檢視更新:當
@State
變數的值改變時,SwiftUI 會自動重新呼叫檢視的body
屬性,以反映新的狀態。
示例程式碼:
struct ContentView: View {
@State private var isOn = false
var body: some View {
Toggle("開關", isOn: $isOn)
}
}
在這個例子中,isOn
是一個 @State
變數,用於儲存開關的狀態。$isOn
建立了一個雙向繫結到 Toggle
控制元件,這意味著當使用者切換開關時,isOn
的值會更新,並且檢視會根據新的狀態重新渲染。