如何确定在iOS中从后台返回前景时加载哪些视图? [英] how to determine which view loads on returning to foreground from the background in iOS?
本文介绍了如何确定在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屋!
查看全文