【发布时间】:2020-09-07 21:22:19
【问题描述】:
我正在编写一个类似于 Apple 内置消息应用程序的短信应用程序。
像 Apple 的第一个视图显示从每个收件人接收或发送的最新文本,并且像消息传递一样,点击该行将带您进入该收件人的聊天视图。
在每个视图中,我声明以下内容以在收到后台 APN 通知时刷新数据:
let pub = NotificationCenter.default.publisher(for: .AYSTextMessagesUpdate)
然后:
.onReceive(pub) { (output) in
self.msgsVM.fetchHeaderTexts()
}
更新数据。我在聊天视图中有相同的代码来更新该特定线程的文本。
问题是,当用户点击聊天视图时,随后会收到通知,父视图的 UI 无效,将用户踢出聊天视图并返回主视图。
我正在使用嵌入在第一个视图中的列表中的 NavigationLink 来导航到聊天视图。当通知进来时,相应的数据刷新会使父视图失效,从而导致父视图(当前不是顶视图)的 UI 失效并重绘用户被踢回父视图。
我要么需要解耦这两个视图,以便一个更新不会使另一个无效,要么以某种方式阻止父视图上的数据刷新被推迟到该视图被显示。
任何帮助将不胜感激。
【问题讨论】:
标签: ios swift swiftui apple-push-notifications