【发布时间】:2017-09-27 05:38:21
【问题描述】:
注意:
- 我没有使用
UINavigationController。 - 我有一个名为
ContainerViewController的UIViewController,它有3 个子视图控制器,其作用类似于UIPageViewController,但它不是UIPageViewController,而是包含一个分页UIScrollView。然后,每个子视图控制器都能够以模态方式实例化其他视图控制器。
我想在从后台返回时刷新视图控制器。但是,只有当您从后台返回时,才会发生这种情况,该视图控制器是可见的(即最顶层且处于活动状态)。
问题是:我如何确定视图控制器是否是可见的(现在在屏幕上最顶部且处于活动状态)?
如果我使用这个问题的答案: Get top most UIViewController
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 的子视图控制器中,此扩展只返回ContainerViewController -> 而不是子视图控制器。
有什么想法吗?
【问题讨论】:
标签: ios swift uiviewcontroller uiscrollview