【发布时间】:2021-08-25 18:33:33
【问题描述】:
我有一个 SwiftUI 视图,我想显示一个显示附加信息的警报,但是问题是当警报被解除时,它会刷新整个视图并将用户导航回根视图(因为状态解除警报时变量 showFutherInfo 发生变化)。我不希望这种情况发生。
一个非常简化的代码版本如下所示:
struct PledgesView: View {
@State var showFurtherInfo :Bool = false
var body: some View {
VStack{
Button(action: {
showFurtherInfo = true
}) {
Image(systemName: "figure.walk").renderingMode(.original)
.resizable()
.frame(width: 50, height: 50, alignment: .center)
}
.alert(isPresented:$showFurtherInfo) {
Alert(
title: Text("Important message"),
message: Text("Important Info"),
dismissButton: .default(Text("Dismiss"))
)
}
}
我想在警报时停止这种令人耳目一新的行为,拜托。基本上我只需要帮助解耦控制正在显示的警报的变量,从这个视图
【问题讨论】:
-
你能加入minimal reproducible example吗?如果没有您的自定义类型,任何人都无法复制/粘贴和测试此代码。
-
现在已经完成了
-
这个例子没有演示“导航[ing]用户回到根视图”——它只是一个视图。
-
肯定还有更多事情要做。我可以用
NavigationView和NavigationLink编写一个示例,并用Alert编写一个不 表现出这种行为的子视图(我刚刚在Xcode 中尝试过)。因此,您的代码中肯定发生了一些不同的事情。如果你为了一个最小的、可重复的例子而减少你的代码,没有人会因为“代码太多”而关闭这个问题。 -
你可以,但这里的用户通常不会善意地看待它。您可能应该做的是将您的代码复制到一个新项目(或创建一个分支),然后削减代码,直到您仅能提出问题,然后在此处提交。当然,这会涉及一些工作,但在此过程中,您可能会发现解决您自己问题的方法,这是完成该过程的另一个价值。