如何清除视图框架
Posted
技术标签:
【中文标题】如何清除视图框架【英文标题】:How to Clear a View Frame 【发布时间】:2020-10-20 02:38:54 【问题描述】:我在视图中有一个重置按钮,轻按时会显示询问“您确定吗?”的警报。带有点击确定或取消的选项。如果用户点击确定,我希望按钮消失并显示“所有数据已被删除”。我尝试放置代码以显示警报下的最后一条消息,但我不断收到有关未使用代码的警告,因此将其放置在结构的较低位置。目前,当点击 Ok 时,警报消失,代码将按钮推到视图顶部并在下方居中显示完成消息。我猜我需要删除按钮框架,但不知道该怎么做。
@EnvironmentObject var userData: UserData
@State private var resetSys: Bool = false
@State private var okTapped: Bool = false
var body: some View
ZStack
Button(action:
self.resetSys.toggle()
)
RoundedRectangle(cornerRadius: 25)
.fill(Color.green)
.frame(width: 165, height: 85)
Text("Reset Data?")
.disabled(okTapped)
.navigationBarTitle("Reset Trip Data", displayMode: .inline)
.alert(isPresented: $resetSys)
Alert(title: Text("Are you sure?"), primaryButton: .destructive (Text("OK"))
okTapped = true
self.userData.resetSysData()
,
secondaryButton: .cancel()
)
if okTapped == true
ZStack
Color.white
Text("All Data has been Deleted")
【问题讨论】:
【参考方案1】:我不确定,也许你需要这样:
@EnvironmentObject var userData: UserData
@State private var resetSys: Bool = false
@State private var okTapped: Bool = false
var body: some View
ZStack
if !self.okTapped
Button(action:
self.resetSys.toggle()
)
RoundedRectangle(cornerRadius: 25)
.fill(Color.green)
.frame(width: 165, height: 85)
Text("Reset Data?")
.disabled(okTapped)
else
Color.white
Text("All Data has been Deleted")
.navigationBarTitle("Reset Trip Data", displayMode: .inline)
.alert(isPresented: $resetSys)
Alert(title: Text("Are you sure?"), primaryButton: .destructive (Text("OK"))
okTapped = true
self.userData.resetSysData()
,
secondaryButton: .cancel()
)
【讨论】:
非常感谢 leorider!效果很好!我确实必须在 RoundedRectangle 和下面的文本周围添加另一个 ZStack 才能将文本放在彩色按钮的顶部。以上是关于如何清除视图框架的主要内容,如果未能解决你的问题,请参考以下文章
使用 Ionic 框架在登录/注销时清除历史记录并重新加载页面
SwiftUI Textfield - 如何在编辑模式下设置文本字段的背景颜色以清除