如何确定在iOS中从后台返回前景时加载哪些视图? [英] how to determine which view loads on returning to foreground from the background in iOS?

查看:99
本文介绍了如何确定在iOS中从后台返回前景时加载哪些视图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个具有多个视图的应用程序. 当我从背景返回到前景时,我想确定当前处于哪个视图.我该怎么办?

I have an application which has more than one view. When I return to the foreground from the background, I want to determine which view I am in presently. How would I do that?

我知道navigationController的visibleViewController属性可能会有所帮助.但是,我想知道如何在与UIViewController对象进行比较时使用它返回的指针.我们如何比较指针? 一些代码片段将非常有帮助.

I understand visibleViewController property of navigationController might help. But, I want to know how to use the pointer returned by it in my comparison with a UIViewController object. How can we compare pointers? Some code snippets would be very helpful.

推荐答案

zirinisp在Swift中的答案:

zirinisp's Answer in Swift:

extension UIWindow {
    func visibleViewController() -> UIViewController? {
        if let rootViewController: UIViewController  = self.rootViewController {
            return UIWindow.getVisibleViewControllerFrom(rootViewController)

    }
    return nil
}

class func getVisibleViewControllerFrom(vc:UIViewController) -> UIViewController {
if vc.isKindOfClass(UINavigationController.self) {

    let navigationController = vc as UINavigationController
    return UIWindow.getVisibleViewControllerFrom( navigationController.visibleViewController)

} else if vc.isKindOfClass(UITabBarController.self) {

    let tabBarController = vc as UITabBarController
    return UIWindow.getVisibleViewControllerFrom(tabBarController.selectedViewController!)

} else {

    if let presentedViewController = vc.presentedViewController {

        return UIWindow.getVisibleViewControllerFrom(presentedViewController)

    } else {

        return vc;
    }
}
}

用法:

if let topController = window.visibleViewController() {
            println(topController)
        }

这篇关于如何确定在iOS中从后台返回前景时加载哪些视图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆