如何在iOS中查找当前视图控制器

如何在iOS中查找当前视图控制器,ios,viewcontroller,Ios,Viewcontroller,我的应用程序的入口是一个UINavgationViewController。根视图控制器是一个uitabarviewcontroller。uitabarviewcontroller包含一些正常的UIViewControllers。这些控制器可以调用: self.navgationController.pushViewcontroller(其他视图控制器,动画:true) 但是,我有另一个线程在后台运行。如何知道主屏幕上当前显示的是哪个视图控制器 我试图调用UIApplication.keywin

我的应用程序的入口是一个
UINavgationViewController
。根视图控制器是一个
uitabarviewcontroller
uitabarviewcontroller
包含一些正常的
UIViewController
s。这些控制器可以调用:

self.navgationController.pushViewcontroller(其他视图控制器,动画:true)

但是,我有另一个线程在后台运行。如何知道主屏幕上当前显示的是哪个视图控制器

我试图调用
UIApplication.keywindows.rootviewcontroller
,但它返回
UINavgationViewController


UINavgationViewController.viewcontrollers.count==1
,它只包含一个
UITabBarViewController

我想您可以从选项卡栏获取所选的视图控制器:

navigationController.tabBarController.selectedViewController

尝试在每个视图控制器类中使用
viewdide
方法

- (void)viewDidAppear:(BOOL)animated
{
        NSLog(@"Currennt view:%@",self);
}
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];


NSLog(@"%@",appDelegate.navController.topViewController);
self
返回ViewController类的名称

- (void)viewDidAppear:(BOOL)animated
{
        NSLog(@"Currennt view:%@",self);
}
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];


NSLog(@"%@",appDelegate.navController.topViewController);
您可以获得被推送的最顶端的
控制器