我有一个iOS消息应用程序,它会在首次启动时加载应用程序后立即显示主屏幕。
如果用户决定直接进入消息屏幕,那么在从我们的服务器获取消息时,它将最初为空白。
每次添加新邮件以重新加载MessagesCollectionView时,我都会从我的邮件模型发布通知:
NotificationCenter.default.post(name: .reloadMessagesCollectionView, object: nil)
然后我有一个观察者,我添加了在我的MessagesViewController
中接收此通知 override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(reloadMessagesCollectionView(_:)), name: .reloadMessagesCollectionView, object: nil)
}
收到通知时,会调用此函数:
func reloadMessagesCollectionView(_ notification: Notification) {
DispatchQueue.main.async {
self.messagesCollectionView.reloadData()
}
}
但是,尽管正在填充messageModel,调用reloadData并且print语句显示collectionView数据源方法正在接收正确的数据,但collectionView保持空白并且不显示新填充的单元格。
转到主屏幕然后再返回会导致正确填充MessagesCollectionView。
任何想法我可能做错了或需要添加?