Swiftui导航到通知视图并返回列表的详细信息视图

问题描述

预期用例 标签B->列表视图->详细信息视图

在点击通知时 标签B->列表视图->详细信息视图->通知详细信息视图

返回

选项卡B->列表视图->详细信息视图

但它的工作原理如下

选项卡B->列表视图->详细信息视图

在点击通知时 标签B->列表视图->详细信息视图->通知详细信息视图

返回

选项卡B->列表视图

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"
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)