2013-12-12 40 views
0

有沒有什麼辦法可以停止重新加載視圖控制器,甚至按下按鈕已被點擊?由於視圖控制器可能有一些程序處理,可能需要時間,我不想再次重新加載該視圖,並在用戶點擊導航到該視圖時再次重新啓動程序。如何停止重新加載視圖控制器後第一次啓動

非常感謝您的幫助。

+0

加載控制器需要多長時間?如果您正在遠程訪問數據,那麼您應該將其緩存在控制器(持久性存儲,CoreData或其他)之外,並且只需定期或根據用戶請求進行刷新,而不是每次控制器加載時都進行刷新。 – railsdog

回答

2

只有在應用程序啓動時才需要運行的任何代碼都可以放入appDidFinishLaunching:withOptions:

如果您的代碼只有在應用程序啓動的第一次啓動時才需要作爲設置代碼運行,並且只要應用程序仍然安裝在設備上,就再也不會運行,但仍然可以使用appDidFinishLaunching:withOptions:,但您需要加入一些邏輯來確定應用是否已經啓動。實現這個目的的最簡單的方法看起來是這樣的:

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"previouslyLaunched"]) { 
    // app already launched 
} else { 
    [[NSUserDefaults standardUserDefaults] setBool:YES 
     forKey:@"previouslyLaunched"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
    // This is the first launch ever 
} 

編輯:您可以應用上面的代碼片斷個人視圖控制器爲好。


但作爲一個音符,一個視圖控制器的viewDidLoad方法不一定稱爲視圖呈現每次。一旦調用viewDidLoad並將視圖放到導航堆棧上,將不會再次調用viewDidLoad,除非將視圖從導航堆棧中移除,然後需要將其放回到導航堆棧上。

例如,當使用導航控制器時,第一次顯示第一個視圖時,將調用viewDidLoad,viewWillAppearviewDidAppear方法。當您導航到導航控制器中的下一個視圖時,回到第一個視圖,viewWillAppearviewDidAppear將再次被調用,但viewDidLoad不會再被調用。

相關問題