我有一个用于检测网络连接的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;
答案 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才能访问。