@State 關(guān)聯(lián)View的狀態(tài),當(dāng)@State修飾的屬性改變時(shí),對應(yīng)的View會跟著刷新,符合MVVM的設(shè)計(jì)理念
@State var count: Int = 0
Section(header: Text("@States")) {
Text("count:\(count)")
Button("count ++") {
self.count = self.count + 1
}
}.padding(.bottom, /*@START_MENU_TOKEN@*/10/*@END_MENU_TOKEN@*/)
@Binding swift中值的傳遞是屬于值傳遞類型,使用@Binding修飾后屬性傳遞就變成引用類型,適合用于子節(jié)點(diǎn)關(guān)系中
@State private var showFavorited: Bool = false
Section(header: Text("@Binding")) {
if showFavorited {
Text("收藏")
} else {
Text("不收藏")
}
FilterView(showFavorited: $showFavorited)
}.padding(.bottom,10)
struct FilterView: View {
@Binding var showFavorited: Bool
var body: some View {
Toggle(isOn: $showFavorited) {
Text("改變收藏狀態(tài)")
}
}
}
@ObservedObject 這是用來修飾自定義對象的,用@ObservedObject修飾這個(gè)對象時(shí),這個(gè)對象必須實(shí)現(xiàn) ObservableObject 協(xié)議,然后用 @Published 修飾對象里屬性,表示這個(gè)屬性是可以被 SwiftUI 監(jiān)聽的
import Foundation
final class User: ObservableObject {
@Published private(set) var name: String = "張三"
var i: Int = 0
func change() {
i = i + 1
if i % 2 == 0 {
name = "張三"
} else {
name = "李四"
}
}
}
@ObservedObject var user: User = User()
Section(header: Text("@ObservedObject")) {
Text("用戶名:\(user.name)")
Button("修改名稱") {
user.change()
}
}.padding(.bottom,10)
@EnvironmentObject 用來從當(dāng)前view的環(huán)境變量中獲取ObservableObject值 最后編輯于 :2021.05.12 17:37:44
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者 【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。 平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。