2010-08-25 45 views
1

我在我的應用程序中使用活動指示器視圖。如何在導航欄中添加活動指示器?

當我點擊一個按鈕時,我希望活動指示器在導航欄中顯示10秒鐘,然後自動隱藏。

我用下面的代碼視圖做負載:

CGRect frame = CGRectMake(0.0, 0.0, 25.0, 25.0); 

self.activity = [[UIActivityIndicatorView alloc] 
      initWithFrame:frame]; 

[self.activity sizeToFit]; 

self.activity.autoresizingMask = 
    (UIViewAutoresizingFlexibleLeftMargin | 
    UIViewAutoresizingFlexibleRightMargin | 
    UIViewAutoresizingFlexibleTopMargin | 
    UIViewAutoresizingFlexibleBottomMargin); 

UIBarButtonItem *loadingView = [[UIBarButtonItem alloc] initWithCustomView:self.activity]; 
loadingView.target = self; 
self.navigationItem.rightBarButtonItem = loadingView; 

而在按鈕動作,我只啓動指標:

[self.activity startanimating]; 

但我無法看到導航欄上的指示器。

請告訴我,如果有我的代碼中的任何問題...

回答

0

我不明白,爲什麼你正在使用的目標(你甚至不指定動作)......反正我只是測試你的代碼,並介紹了這個微調。每當我想開始活動指標,我使用這段代碼:

UIActivityIndicatorView *test = (UIActivityIndicatorView*)self.navigationItem.rightBarButtonItem.customView; 

[test startAnimating]; 

顯然我不使用伊娃,因爲它不是必需的。這只是一個強制轉換,並且來自你的UIViewController,你可以以非常快的方式獲得它。

希望它有幫助。

5
UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
UIBarButtonItem *itemIndicator = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator]; 
[self.navigationItem setLeftBarButtonItem:itemIndicator]; 
[activityIndicator startAnimating]; 
+0

這適用於我,但UIActivityIndi​​catorViewStyleWhite樣式使其對我的默認導航欄背景隱藏。將樣式更改爲UIActivityIndi​​catorViewStyleGray使其可見。 – NSCoder 2015-01-19 21:59:46

+0

你也可以設置tintColor屬性來改變不同的顏色。 – 2015-01-20 05:49:37