注意:
- 我没有使用
UINavigationController
。 - 我有一个名为
ContainerViewController
的UIViewController
,它有 3 个 subview Controller ,其行为类似于UIPageViewController
,但它不是>UIPageViewController
,它包含一个分页UIScrollView
。然后,每个 subview Controller 都能够以模态方式实例化其他 View Controller 。
我想从后台返回时刷新 View Controller 。但是,只有当您从后台返回时,该 View Controller 是可见的(意味着最顶层且处于事件状态),才会发生这种情况。
问题是:如何确定 View Controller 是否是可见的(现在在屏幕上最上面且处于事件状态)?
如果我使用这个问题的答案: 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
的 subview Controller 中,则此扩展仅返回 ContainerViewController
-> 而不是 subview Controller 。
有什么想法吗?
最佳答案
您知道您将需要这些信息,因此只需提前计划即可。每次在 ScrollView 中切换页面时,请使用您对 subview Controller 和页面的了解,在容器 View Controller 的属性中记录 View Controller 的 View 现在显示的内容。现在您所要做的就是查阅该属性。
关于ios - 获取分页UIScrollView中可见 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43691430/