2014-03-29 74 views
3

我有一個NSObject文件用於檢測網絡連接。如果它關閉,我想在當前視圖控制器navigationitem的頂部顯示一個活動指示器。我的故事板配置是一個帶有三個選項卡的tabbar控制器。每個標籤通過導航控制器分別連接到多個視圖控制器(即每個標籤都有一個導航控制器)。從NSObject獲取當前視圖控制器類文件

我喜歡獲取當前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; 

回答

1

您駕駛室我們visibleViewController財產

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

它沒有工作。 UIViewController仍然是零。 – user2981756

11

你可以試試這個。我用這個在我的應用程序從一個NSObject的文件的任何地方顯示一個觀點:

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

希望這會爲工作,你

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

必須在已經使用的UINavigationController作爲RootViewController的爲您的UIWindow項目。

+0

工作我謝謝! – kb920

0

請檢查您的

#import <UIKit/UIKit.h> 

大部分成員沒有測試它,如果你可以使用它那麼只有窗口的UIViewController都能夠訪問。

相關問題