2010-11-19 41 views
0

我有一個基於標籤欄和從互聯網檢索到的數據的應用程序。主選項卡顯示地圖,其他選項卡之一顯示使用UITableView顯示的地圖中心點周圍的事件。如果用戶移動地圖,然後移動到事件頁面,則需要刷新表中顯示的事件列表。要做到這一點,我要求在viewWillAppear:animated:事件,當完成(異步)我稱爲表視圖的reloadData方法。除非用戶在標籤之間快速切換(例如顯示事件,移動到地圖,移動地圖,移回事件,移回地圖等),否則這種方式非常有效。某些時候,表視圖試圖訪問事件數據源(NSArray)時會被修改。我的數據源正在從UITableView下更改

這裏有一個問題,是類似的:
UITableView Crashes if Data Source Is Updated During Scrolling

一爲這一問題的解決方案的描述在較高的水平,這正是我想要的一個解決方案:凍結數據源,而該表正在更新。然而,我無法弄清楚的是何時解凍數據源。問題是我無法找到任何方式在表完成更新時得到通知。

任何想法?在更新表時如何凍結數據源,然後在表完成更新後解凍它?

回答

1

雖然我很想當表視圖進行訪問數據源接收通知,我發現我的問題是一個假設由於從工作線程修改數據容器。回答這個問題使我的解決方案:

Refreshing XML data and updating a UITableView

我現在要做的就是在工作線程填寫一個單獨的數組,然後在主線程中進行選擇,以更新的數據交換到數據表視圖使用的容器。

-1

問題是我找不到任何方式 當表完成 正在更新時被通知。

我認爲你可以通過檢查tableView:cellForRowAtIndexPath:來確定數據是否被加載完成,以查看最後一行是否已被加載。

我沒有測試過,只是讓基於API

+0

那麼,有問題的是'tableView:cellForRowAtIndexPath:'分別爲每行調用,只爲行可見。結果,你完全不知道何時完成它的調用。 – 2010-11-20 20:43:31