2016-09-18 156 views
1

我的標題可能沒有意義,但我會盡我所能解釋它。所以,基本上,我有一個從Firebase獲取數據的UITableView。它有一個監聽器,並且該樹上的任何時間值都被更改,它會更新tableview。事情是,我把它放在viewDidLoad中。 (這似乎是最有意義的)。比方說,如果用戶轉到設置屏幕(一個獨立的VC),並返回,它會重新加載tableview。有幾個用戶抱怨說,當他們回到主VC時加載tableview需要很長時間,我很好奇我是否可以將數據保存在THC vc中,所以它是永久的,直到我的偵聽器檢測到數據庫中的更改。不知道這是否有任何意義 - 但基本上我希望tableview加載數據的唯一時間是初始加載,並且當數據在後端被更改時。並非每次viewDidLoad被調用。如何在viewDidLoad上重新加載UITableView?

TL; DR: 我如何使它所以tableview中加載數據一次,切換視圖控制器即使

+0

'viewDidLoad'只在viewController生命週期中被調用一次。你如何從設置VC返回到這個viewController? – vacawama

+0

@vacawama segue,沒什麼特別的,只是一個與主要VC標識符相關的performSegue。呃,我知道這對導航控制器來說會更好,但是現在不存在這個問題:/ –

+1

你不應該使用標準的segue來「返回」你的tableViewController。 segue創建viewController的新副本,而不是返回到前一個仍在內存中的副本。您需要使用* unwind segue *從設置視圖控制器返回。 – vacawama

回答

3

viewDidLoadlifecycle of a viewController期間只調用一次數據保持。您正在使用segue從設置viewController返回到您的tableViewController。 A segue總是實例化一個新的destinationViewController。唯一的例外是退回到先前實例化的viewController的特殊展開segue

因此,使用開卷SEGUE返回到您的tableViewController您的信息依然存在,並viewDidLoad不會被調用。

+0

可能會添加http://stackoverflow.com/questions/5562938/looking-to-understand-the-ios-uiviewcontroller-lifecycle到答案。 – BennX

+1

@BennX,我添加了鏈接到我的答案。感謝您的建議。 – vacawama