SwiftUI - 不改变视图
Posted
技术标签:
【中文标题】SwiftUI - 不改变视图【英文标题】:SwiftUI - Not changing views 【发布时间】:2021-02-07 19:37:22 【问题描述】:我有一个表单,如果 Bool 为假,我想更改视图:
var body: some View
NavigationView
Form
Section
Toggle(isOn: $ClientAnswer)
Text("Client answer")
if ClientAnswer
Toggle(isOn: $submission.fieldOne )
Text("Field One")
Toggle(isOn: $submission.fieldTwo )
Text("Field Two")
Section
Button(action:
if self.ClientAnswer
self.placeSubmission()
else
ShowRS() //**change views here.**
print("test")
)
Text("Submit")
.disabled(!submission.isValid)
代码正在执行,print("test")
工作正常,但它不会改变视图它只是保持在同一个视图上?
我试图切换到的视图是:
struct ShowRS: View
var body: some View
Image("testImage")
【问题讨论】:
你想用ShowRS
替换哪个视图?
【参考方案1】:
您必须将ShowRS
包含在您的视图层次结构中——现在,它只是在您的Button
s 操作回调中。有多种方法可以实现这一点,但这里有一种选择:
struct ContentView : View
@State private var moveToShowRSView = false
var body: some View
NavigationView
Button(action:
if true
moveToShowRSView = true
)
Text("Move")
.overlay(NavigationLink(destination: ShowRS(), isActive: $moveToShowRSView, label:
EmptyView()
))
struct ShowRS: View
var body: some View
Image("testImage")
我已经从您的示例中简化了这一点,因为我没有您的所有代码与您的模型等,但它演示了这个概念。在Button
操作中,您测试一个布尔值(在这种情况下,它将始终返回true
),然后设置@State
变量moveToShowRSView
。
如果moveToShowRSView
为真,则Button
上有一个overlay
,它有一个NavigationLink
(因为EmptyView
是不可见的),只有当moveToShowRSView
是true
时它才会处于活动状态
【讨论】:
谢谢,一件事,不管isActive是真还是假,视图似乎都显示出来了? 你指的是什么观点?ShowRS()
overlay
上的视图
嗯 - 我正在运行我提供的代码,并且 ShowRS() 只有在您单击按钮后才会出现。您是在运行我的代码还是尝试将其翻译到您的应用程序中并且您在那里看到了它?如果是这样,您可以发布更新后的代码吗?以上是关于SwiftUI - 不改变视图的主要内容,如果未能解决你的问题,请参考以下文章