SwiftUI:如何更改子视图?
Posted
技术标签:
【中文标题】SwiftUI:如何更改子视图?【英文标题】:SwiftUI: How to change subview? 【发布时间】:2021-12-30 10:51:27 【问题描述】:我想通过子视图的函数调用来改变子视图的状态。但是视图没有更新。
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,我的主视图中仍然有一些子视图。
【问题讨论】:
【参考方案1】:如果视图是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()
【讨论】:
以上是关于SwiftUI:如何更改子视图?的主要内容,如果未能解决你的问题,请参考以下文章