如何解决如何从模态呈现的视图控制器返回到选定的选项卡栏视图控制器?
从标签栏控制器中,我想以模态方式显示 2 个其他视图控制器(全屏)。完成全屏 1 和 2 后,我想回到 标签栏控制器中的选定标签。
但是,当我使用:
Self.view.window.rootviewcontroller.dismiss(animated: true,completion: nil)
它带我回来,但“viewdidappear”没有重新运行。如何再次呈现选中的标签栏 VC 以便“viewdidappear”再次运行?
解决方法
而不是依赖 viewdidappear 在关闭两个全屏视图控制器时调用。我建议您在关闭两个全屏时委派刷新标签栏内容的任务。
例如:
//fullscreen 2 dismiss action
func done()
{
dismiss(animated: true,completion: {
//here you can have reference to presenter view controller as delegate and pass your info to that delegate
var info = some info captured from full screen two view controller.
delegate.dismissAndRefresh(info:info)
}
}
//In Full screen 1 view controller
func dismissAndRefresh(info: Dictionary)
{
dismiss(animated: true,completion: {
//have reference to tab bar controller and pass the info to tab controller.
tabBarControllerDelegate.refreshContent(info)
}
}
//In tab controller
func refreshContent(info:Dinctionary)
{
//refresh your content as you are doing in view did appear.
}
这不是您可以尝试将信息从全屏 2 视图控制器直接传递给标签栏控制器并关闭两个呈现的全屏视图控制器的唯一方法。
但是当您查看层次结构更改时,使用自视图窗口获取根视图控制器会导致很多问题,例如,显示了其他控制器或显示了某些警报。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。