2013-01-16 74 views
1

我正在研究一個IPhone應用程序,通過viewDidLoad,進行連接並將數據拉入表中。我希望控制器或至少是表格在每次顯示控制器時重新加載,即使某人剛剛從一個標籤切換到另一個標籤或關閉並重新打開該控制器上的應用程序。有沒有辦法做到這一點?我似乎無法找到任何東西,搜索也很難。我已經找到了何時將代碼放在viewDidLoad中的討論,但沒有討論控制器顯示的每個控件都運行的另一種方法。Xcode:重新加載每個視圖的控制器的一部分

感謝, 謝麗爾

回答

1

有沒有辦法通過只在一個地方注入代碼來做到這一點。

你能想到的一種解決辦法,例如像從代碼所需的零部件發送定製的「重載請求」通知:

  1. viewDidAppear:在您的視圖控制器
  2. applicationDidBecomeActive:(如表提交)
  3. tabBarController:didSelectViewController:(如果交換到控制器,與所述表)
  4. tabBar:didSelectItem:(與上述相同)

在您查看控制器只需觀察此通知並在需要時重新加載數據。

雖然,最重要的是:你真的真的需要在如此苛刻的要求下重新加載數據嗎?在大多數情況下,數據重載時發生

  1. 視圖控制器的viewDidLoad:
  2. 是手動啓動(按鈕等)
  3. 經過很長一段時間以來的最後一次更新收到

否則這只是一個矯枉過正的問題。

+0

你能澄清一下「大多數情況下數據重新加載發生時間 - 自從上次更新已經過去很長時間了」?確實,重新加載不一定會不斷髮生,但我肯定不希望有人點擊主頁按鈕來關閉應用程序,一天後重新打開應用程序,仍然可以看到相同的數據。 –

+0

只需定時器定期檢查上次更新的日期。如果數據是舊的(例如> 12h),則觸發重新加載。簡單而簡單。每次打噴嚏都要吸引新的數據對於良好的用戶體驗來說是不可接受的。 –

2

你想用

-(void)viewDidAppear:(BOOL)animated { 

    [super viewDidAppear:animated]; 

    //code to reload table viewdata 

} 

每次視圖顯示該方法被調用。我在我的應用中使用了很多。

+0

'viewDidAppear:'在用戶切換標籤欄中的項目或關閉並重新打開應用程序時不會調用。或者當全屏幕模式視圖控制器被解僱時。或者其他一些用例,我現在無法想到。我認爲這是這個問題的主要障礙。 –

+1

它適合我...我一直這樣做。無論何時切換標籤viewDidAppear被調用。 – Hackmodford

+0

是的,我可能搞砸了標籤欄(雖然我有一個問題,只是不記得確切的情況),但是,在這種情況下,當控制器關閉屏幕,並沒有收到'viewDidAppear:'消息當回來時。最常見的是:重新打開應用程序。較不常見:使用嵌入式視圖控制器解除模態視圖控制器。 –

相關問題