6

我有一個視圖控制器,當用戶點擊按鈕時啓動異步網絡請求,然後在請求完成後再推送另一個控制器。在那段時間裏,我想讓導航欄顯示一個活動指示器,這樣用戶就知道它正在提取數據。我有這個代碼在IBAction的按鈕:將活動指示器添加到導航欄

self.activityIndicator = [[UIActivityIndicatorView alloc] 
    initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhite]; 
    // I've tried Gray, White, and WhiteLarge 
[self.activityIndicator startAnimating]; 
self.activityIndicator.hidden = NO; 
UIBarButtonItem* spinner = [[UIBarButtonItem alloc] initWithCustomView: self.activityIndicator]; 
self.navigationItem.rightBarButtonItem = spinner; 

該指標沒有出現,但這個代碼被調用。我已經看過關於該主題的其他帖子,他們說要做到這一點。在通話期間UI線程不會出現阻塞(我可以在等待時點擊其他按鈕並導航不同的路徑)。 我錯過了什麼嗎?

+0

你的導航欄是什麼顏色的? – Avt

回答

2

我解決它。

有一個取消按鈕已經在鍵盤沒有了時會消失。刪除取消按鈕的代碼並不在乎它是否刪除按鈕或我的微調。我將微調代碼移到了後面的位置,並且都很好。

0

如果在該位置已經存在UIBarButtonItem,則遇到問題。如果是這種情況下可以嘗試:

self.navigationItem.rightBarButtonItem = nil; 
self.navigationItem.rightBarButtonItem = spinner; 
0

您也可以嘗試設置欄按鈕項目像這樣(如果您至少指定的iOS 5):

self.navigationItem.rightBarButtonItems = @[spinner];