gpt4 book ai didi

ios - 以编程方式一个接一个地关闭 SwiftUI View 不起作用

转载 作者:行者123 更新时间:2023-12-04 14:10:24 26 4
gpt4 key购买 nike

我使用 Xcode 12.2 和 iOS 构建目标 14.1。
我的 SwiftUI 应用程序存在一个问题,即关闭一个接一个使用 NavigationLink 的 View 不起作用。
当我第一次导航到 View4 时,以下 Swift 源代码出现问题,单击“关闭”,然后在 View3 上再次单击“关闭”。后一个按钮单击不会导致任何操作。要让 View3 的“关闭”按钮再次工作,我必须使用后退按钮转到 View2,然后切换回 View3。
我之前尝试使用 presentationMode.wrappedValue.dismiss() ,但是这对较少的 View 不起作用。
最小可重复性示例:

struct View1: View {
@State var presentView2: Bool = false

var body: some View {
NavigationView {
List {
NavigationLink(
destination: View2(types: ["Exams"], presentView2: $presentView2),
isActive: $presentView2,
label: {
Text("View2")
})
}.listStyle(InsetGroupedListStyle())
.navigationTitle("View1")
}
}
}
struct View2: View {
var types: [String]
@State var presentView3: Bool = false
@Binding var presentView2: Bool

var body: some View {
List {
Section {
NavigationLink("View3", destination: View3(presentView3: $presentView3), isActive: $presentView3)
}

Section {
Button(action: {self.presentView2 = false}, label: {
Text("Dismiss")
})
}
}
.listStyle(InsetGroupedListStyle())
.navigationTitle(LocalizedStringKey("View2"))
}
}
struct View3: View {
@Binding var presentView3: Bool
@State var presentView4: Bool = false
@State
var isAddViewPresented: Bool = false
var body: some View {
List {
Section {
NavigationLink("View4", destination: View4(presentView4: $presentView4), isActive: $presentView4)
}

Button(action: {presentView3 = false}, label: {
Text("Dismiss")
})
}
.listStyle(InsetGroupedListStyle())
.navigationTitle("View3")
.toolbar {
ToolbarItem {
Button(action: {isAddViewPresented.toggle()}, label: {
Label("Add", systemImage: "plus.circle.fill")
})
}
}
.sheet(isPresented: $isAddViewPresented, content: {
Text("DestinationDummyView")
})
}
}
struct View4: View {
@Binding var presentView4: Bool

var body: some View {
List {
Button(action: {presentView4 = false}, label: {
Text("Dismiss")
})
}
.listStyle(InsetGroupedListStyle())
.navigationTitle("View4")
}
}
有没有人有解决方案?
具体来说,我需要在我的应用程序中删除应用程序中的记录(首先是子项,然后是父项)。
感谢您的任何反馈和意见! ☺️☺️☺️

最佳答案

添加 .isDetailLink(false)每个NavigationLink在你看来......和所有的作品。
demo


NavigationLink(
destination: View2(types: ["Exams"], presentView2: $presentView2),
isActive: $presentView2,
label: {
Text("View2")
}).isDetailLink(false)

...

NavigationLink("View3", destination: View3(presentView3: $presentView3), isActive: $presentView3)
.isDetailLink(false)


...

NavigationLink("View4", destination: View4(presentView4: $presentView4), isActive: $presentView4)
.isDetailLink(false)

关于ios - 以编程方式一个接一个地关闭 SwiftUI View 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64958493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com