Swiftui 快捷方式导航到列表的通知视图和返回详细视图
预期用例 选项卡B->列表视图->详细视图 关于窃听通知 选项卡B->列表视图->详细视图->通知详细视图 返回导航 选项卡B->列表视图->详细视图 但它的工作方式如下 选项卡B->列表视图->详细视图 关于窃听通知 选项卡B->列表视图->详细视图->通知详细视图 返回导航 选项卡B->列表视图Swiftui 快捷方式导航到列表的通知视图和返回详细视图,swiftui,swiftui-list,swiftui-navigationlink,Swiftui,Swiftui List,Swiftui Navigationlink,预期用例 选项卡B->列表视图->详细视图 关于窃听通知 选项卡B->列表视图->详细视图->通知详细视图 返回导航 选项卡B->列表视图->详细视图 但它的工作方式如下 选项卡B->列表视图->详细视图 关于窃听通知 选项卡B->列表视图->详细视图->通知详细视图 返回导航 选项卡B->列表视图 struct ContentView: View { let todoPublisher = NotificationCenter.default.publisher(for: NSNot
struct ContentView: View {
let todoPublisher = NotificationCenter.default.publisher(for: NSNotification.Name("Detail"))
@State var show: Bool = false
@State var navigationTitle: String = "First"
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: Detail(), isActive: self.$show) { Text("")}.hidden()
// HiddenNavigationLink(destination: Detail(), isActive: self.$show)
TabView() {
FirtstView(navigationTitle: self.$navigationTitle)
.tabItem {
Image(systemName: "1.circle")
Text("First")
}.tag(0)
ListView(navigationTitle: self.$navigationTitle)
// ListView()
.tabItem {
Image(systemName: "2.circle")
Text("Second")
}.tag(1)
}
}
.navigationBarTitle(navigationTitle)
}
.onReceive(todoPublisher) {notification in
self.show = true
}
}
}
下面是列表视图代码
struct ListView: View {
@Binding var navigationTitle: String
var body: some View {
List {
ForEach(0..<5) {data in
NavigationLink(destination: DetailView()) {
Text("Text for row \(data)")
}
}
}
.onAppear() {
self.navigationTitle = "Second"
}
}
}
结构列表视图:视图{
@绑定变量navigationTitle:字符串
var body:一些观点{
名单{
ForEach(0..A
NavigationLink
始终具有父视图,即包含NavigationLink的视图。当您点击后退箭头时,它将弹出NavigationLink并导航回此父视图
在您的示例中,您正在显示来自ContentView
的隐藏导航链接。这意味着ContentView
将成为NavigationLink
的父级
如果希望导航链接的返回箭头导航到详细视图
,则需要从详细视图
启动导航链接
这意味着需要从详细视图中显示隐藏的NavigationLink
:
struct DetailView: View {
...
var body: some View {
...
NavigationLink(destination: Detail(), isActive: self.$show) {
EmptyView()
}.hidden()
}
}
请将代码直接粘贴到问题中,不要发布到GitHub的链接。@pawello2222我编辑了我的问题,请检查这一点是否正确,但通知可能会随时出现在任何屏幕上。点击通知时,它必须导航到通知详细信息视图,并向后导航,它必须显示以前导航的视图。@kirang39 t然后,我建议您向ContentView添加一个工作表-这样您就不需要更改通知的处理方式。否则,您可能需要为每个视图添加导航链接和通知处理。