[英]SwiftUI: How to change subview?
我想通過子視圖的 function 調用更改子視圖的 state。 但是視圖沒有更新。
struct MainView: View {
var subView: SubView = SubView()
var body: some View {
subView
Button("Button") {
subView.change()
}
}
}
struct SubView: View {
@State private var enabled = false
var body: some View {
if enabled {
Text("Some Label")
}
}
public func change() {
enabled.toggle()
}
}
使用@Binding 可以做到這一點,就像這里描述的那樣: https://www.hackingwithswift.com/forums/swiftui/calling-functions-of-sub-views/1960
但我對這個解決方案不滿意,因為我想完全提取視圖。 使用@Binding,我的主視圖中仍然有一些子視圖。
如果是State
到視圖,您總是希望將其保留在該視圖中,而不是從另一個視圖影響它。 解決方案是將按鈕放在子視圖中並直接訪問@State var enabled
。 此外,你寫這篇文章的方式會給你多個視圖。 您總是希望視圖結構返回單個視圖,因此我將Text
和Button
放入VStack
struct MainView: View {
var body: some View {
SubView()
}
}
struct SubView: View {
@State private var enabled = false
var body: some View {
VStack {
if enabled {
Text("Some Label")
}
Button("Button") {
enabled.toggle()
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.