使用标签栏控制器离开视图时如何关闭视图

Posted

技术标签:

【中文标题】使用标签栏控制器离开视图时如何关闭视图【英文标题】:How to dismiss a view when leaving it with tab bar controller 【发布时间】:2017-10-05 23:17:57 【问题描述】:

我使用标签栏控制器从 VC1 转到 VC2。这样做,VC1 会留在内存中。我使用 VC2 管理数据,当我返回 VC1(使用标签栏控制器)时,我使用 viewWillAppear 中的函数重新加载 VC1,它工作正常,但在重新加载动画期间仍然可以看到以前版本的 VC1。

我必须在动画或重新加载过程开始之前关闭 VC1(从内存中)。 我已经在 VC1 的viewWillAppearviewDidDisappear 中尝试了这些命令,但没有成功。

self.dismiss(animated: true, completion: nil)
self.presentedViewController?.dismiss(animated: true, completion: nil)

我的猜测是,最好的方法是在迁移到 VC2 时关闭 VC1,但还没有找到方法。

感谢您的帮助。

【问题讨论】:

显然,从 VC2 更改模型后,您的 VC1 中的视图需要“刷新”。如果您能分享您在 VC1 中的哪些观点,将会有所帮助。 【参考方案1】:

我的建议,使用NotificationCenter 在 VC1 中添加观察者,并在发生某些事件时从 VC2 触发。

添加观察者。

NotificationCenter.default.addObserver(forName: Notification.Name(rawValue: "updateVC1"),
                                       object:nil, queue:nil) 
                                        notification in

                                        // do something

从 VC2 触发观察者

NotificationCenter.default.post(name: Notification.Name(rawValue: "updateVC1"), object: nil)

【讨论】:

以上是关于使用标签栏控制器离开视图时如何关闭视图的主要内容,如果未能解决你的问题,请参考以下文章

按下标签栏项目时如何关闭视图?

iOS - 关闭视图控制器后标签栏变为透明

关闭模态呈现的视图控制器后切换标签栏控制器视图控制器

从标签栏控制器模态显示视图

关闭标签栏控制器

使用标签栏关闭视图控制器后动画不会停止