由于 iOS 13.4 和 Xcode 11.4 存在一些问题,presentationMode.wrappedValue.dismiss()
我正在寻找另一种以编程方式返回的方法。我从 MScottWaller 找到了这个解决方案:
不幸的是,就我而言,它不起作用:
struct MasterView: View {
@State private var showDetail = false
var body: some View {
VStack {
Text("MasterView")
.navigationBarItems(trailing: HStack {
NavigationLink(destination: DetailView(showSelf: $showDetail), isActive: $showDetail) {
Image(systemName: "tag")
.padding(.leading, 4)
}
})
}
}
}
struct DetailView: View {
@Binding var showSelf: Bool
var body: some View {
Button(action: {
self.showSelf = false
}) {
Text("Pop")
}
}
}
如果 NavigationLink 位于 navigationBarItem 内,我将无法从 DetailView 返回。我不知道这是否是一个错误或者还有其他原因导致 NavigationLink 在 navigationBarItem 内不能以相同的方式工作。
作为一种解决方法,我在视图内使用带有空 NavigationLink 的这个变体。它有效,但我不喜欢这样:
struct MasterView: View {
@State private var showDetail = false
var body: some View {
VStack {
Text("MasterView")
NavigationLink(destination: DetailView(showSelf: $showDetail), isActive: $showDetail) {
EmptyView()
}
.navigationBarItems(trailing: HStack {
Button(action: { self.showDetail.toggle() }) {
Image(systemName: "tag")
.padding(.leading, 4)
}
})
}
}
}
任何想法为什么 NavigationLink 不能在 navigationBarItem 内正确工作?