如何获取当前可见的视图控制器

时间:2016-10-14 18:37:17

标签: ios swift

我正在尝试使用以下内容获取当前显示的ViewController

let currentViewController = UIApplication.sharedApplication().keyWindow!.rootViewController?.presentedViewController

此属性为我提供了TabBarControllerpresentedViewController之后唯一的属性是“childViewControllers”。

我如何使用它来获得当前显示的ViewController

2 个答案:

答案 0 :(得分:0)

如果是基于TabBar的应用程序,那么检查当前选择的ViewController取决于以下条件:

  1. 第一个跟踪选择了哪个标签栏,例如:检查选择了哪个标签索引的条件

  2. 为每个TabBar维护NavigationController

  3. 然后检查navigationcontroller stack最后一个索引以匹配ViewController。 (你可以说是chilviewcontroller)。

  4. 希望它有所帮助。

答案 1 :(得分:0)

您可以从tabBarController访问所选的视图控制器。一个简单的方法是使用此扩展名。

请注意,在viewDidAppear之前,它不会使用正确的值进行更新。在此之前检查属性将为您提供之前的屏幕。

import UIKit

extension UITabBarController {
    var displayedViewController: UIViewController? {
        return selectedViewController
    }
}