ios - 获取分页UIScrollView中可见 View Controller

标签 ios swift uiviewcontroller uiscrollview

注意:

  • 我没有使用 UINavigationController
  • 我有一个名为 ContainerViewControllerUIViewController,它有 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/

相关文章:

iphone - UIPinchGestureRecognizer 和 UIImageView 的问题

ios - 将对象移动到屏幕中央

swift - 类型 'UIView' 的值没有成员 'present' - 如何调用 'present'?

iphone - Objective-C:UIViewController 中出现的键盘隐藏的 UIScroller 和 UItextfields

ios - swift : How to set Custom UICollectionViewCell as circle?

ios - 分段 Controller 中可以维护两个 TableView 和一个 View Controller 吗?

html - 如何允许用户使用 <input> 在 iOS 数字键盘中输入 "."?

ios - 将应用程序上传到 testflight

php - Venmo - Braintree 支付 - 服务器集成

ios - Swift iOS 编程 - 如何处理错误(即防止应用程序崩溃/退出)