在分页UIScrollView中获取可见的视图控制器

时间:2017-04-29 03:13:53

标签: ios swift uiviewcontroller uiscrollview

注意:

  • 我没有使用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 - >不是子视图控制器。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您知道自己需要这些信息,所以这只是提前规划的问题。每次在滚动视图中切换页面时,请使用您对子视图控制器和页面的了解,在容器视图控制器的属性中记录视图控制器的视图现在显示的内容。现在你所要做的就是咨询那个财产。