从NSObject类文件中获取当前视图控制器

时间:2014-03-29 04:26:59

标签: ios

我有一个用于检测网络连接的NSObject文件。如果它关闭,我想在当前视图控制器navigationitem的顶部显示一个活动指示器。我的storyboard配置是一个带有三个选项卡的tabbarcontroller。每个标签通过导航控制器单独连接到多个视图控制器(即每个标签有一个导航控制器)。

我喜欢获取当前的viewcontroller并显示活动指示器,但未能获得当前显示的viewcontroller。我已经尝试过以下代码但不起作用。有人可以建议我吗?

   UIViewController *topViewController = [UIApplication sharedApplication].keyWindow.rootViewController;
   UIActivityIndicatorView *aiView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
   aiView.hidesWhenStopped = NO; //I added this just so I could see it
   topViewController.navigationItem.titleView = aiView;

4 个答案:

答案 0 :(得分:11)

你可以试试这个。我使用它来从NSObject文件中显示我的应用程序中的任何位置:

UIWindow *window=[UIApplication sharedApplication].keyWindow;
UIViewController *vc = [window rootViewController];

答案 1 :(得分:1)

您可以使用visibleViewController属性

UIWindow *window=[UIApplication sharedApplication].keyWindow;
UIViewController *currentVc=[window.rootViewController.navigationController visibleViewController];

答案 2 :(得分:1)

希望这对你有用

UIViewController *currentVc = [(UINavigationController *)[UIApplication sharedApplication].delegate.window.rootViewController topViewController];

您必须在项目中使用UINavigationController作为UIWindow的rootViewController。

答案 3 :(得分:0)

请检查

#import <UIKit/UIKit.h> 

大多数成员未能测试它,如果你可以使用它,那么只有窗口和UIViewController才能访问。