3

我有一個帶有用戶生成內容的標籤欄的應用程序。當每個視圖控制器加載時,viewDidLoad方法向服務器發出HTTP請求以獲取數據,然後相應地填充其視圖。但是,一旦加載了所有數據,視圖仍保持不變(除非視圖控制器已卸載並重新加載)。在前臺應用刷新視圖控制器內容

很多其他具有用戶生成內容的應用程序都有類似的行爲,除非每個視圖都會在應用程序進入後臺時重新加載,然後再次返回到前臺。也就是說,當用戶在應用程序處於活動狀態時在各個選項卡之間切換時,內容將不會自動刷新。如果用戶「退出」應用程序,然後再回來,視圖將被重新加載。

是否有標準的做法來設計一個應用程序的行爲呢?具體來說,我想知道是否有UIKit的細節,我可以利用它來刷新我對應用程序「重新啓動」的看法。

否則,我想一個簡單的方法是讓每個視圖控制器在viewDidLoad中註冊通知,並監聽進入前臺的應用程序。然後控制器可以通過重新加載其數據來響應每個通知。

回答

5

在每個視圖控制器中,您想要訂閱UIApplicationDidBecomeActiveNotification通知,並實現在接收到該通知時被調用的方法。這種方法將重新加載,但是您的數據需要重新加載超出了我們可以在這裏回答的範圍。這就是我的做法,以及我如何推薦做到這一點。

+1

對此的優化是確定您是否是可見的VC。如果你不可見,那麼簡單地設置一個髒標誌並刷新,如果你確實變得可見。 viewDidAppear:(BOOL)動畫將幫助你實現髒標誌。 – logancautrell 2010-09-14 19:56:58

+2

如何確定視圖是否可見?我認爲這實際上是必要的,因爲總是響應UIApplicationDidBecomeActiveNotification將導致不必要的成本重新加載數據的視圖可能不會顯示。然而,viewDidAppear:實際上並沒有達到我們需要的東西,因爲它在應用程序變爲活動狀態時似乎不會觸發。它似乎只在應用程序爲_already active_時出現視圖,而不在視圖在應用程序從非活動狀態變爲活動狀態時已可見。 – pmc255 2010-09-14 20:43:23