注意:
UINavigationController
。UIViewController
名为ContainerViewController
,其中有3个子视图控制器,其作用类似于UIPageViewController
,但它不是UIPageViewController
,它包含一个分页{ {1}}而是。然后,每个子视图控制器都能够以模态方式实例化其他视图控制器。我想从后台回来时刷新视图控制器。但是,只有当您从后台返回时,才会发生这种情况,即视图控制器是可见的(意味着最顶层和活动状态)。
问题是:如何确定视图控制器是否可见(现在屏幕上最顶层和活动状态)?
如果我使用这个问题的答案: Get top most UIViewController
UIScrollView
这很有效。但是,如果我将应用程序保留在extension UIApplication {
class func topViewController(controller: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? {
if let navigationController = controller as? UINavigationController {
return topViewController(controller: navigationController.visibleViewController)
}
if let tabController = controller as? UITabBarController {
if let selected = tabController.selectedViewController {
return topViewController(controller: selected)
}
}
if let presented = controller?.presentedViewController {
return topViewController(controller: presented)
}
return controller
}
}
的子视图控制器中,则此扩展程序只返回ContainerViewController
- >不是子视图控制器。
有什么想法吗?
答案 0 :(得分:0)
您知道自己需要这些信息,所以这只是提前规划的问题。每次在滚动视图中切换页面时,请使用您对子视图控制器和页面的了解,在容器视图控制器的属性中记录视图控制器的视图现在显示的内容。现在你所要做的就是咨询那个财产。