2010-10-14 46 views
0

我有一個多節UITableView與自定義標題視圖,需要知道他們的部分索引。我當前在viewForHeaderInSection中創建自定義視圖時,在UIView的標記字段中記錄節號。但是,當行被刪除時,UITableView不會爲屏幕上可見的標題視圖重新加載節標題視圖,因此它們的標記字段不同步。通過重新創建標題視圖,在表上調用reloadData可重新同步標記字段,但調用reloadData會干擾行刪除動畫。設置一個定時器在「短」時間段後調用reloadData似乎有些冒險,如果用戶在定時器觸發之前最終與失步頭交互(我想我可以添加一個狀態變量來防止這種情況發生,呃)。如何在刪除部分時更新UITableView中的自定義標題視圖?

我可以跟蹤容器中創建的所有標題視圖,並在行被刪除時調整它們的標記(再次)。但是,我如何避免泄露視圖?我如何知道UITableView何時發佈視圖,以便我可以刪除對它們的引用以便它們可以被釋放?

這似乎是更多的工作比它應該是....我錯過了什麼嗎?我注意到其他人有非常相似的問題,從來沒有看到解決它的權威方法。

回答

0

我有一個多節UITableView與自定義標題視圖,需要知道他們的部分索引。我當前在viewForHeaderInSection中創建自定義視圖時,在UIView的標記字段中記錄節號。

控制器擁有的字​​典如何記錄每個視圖的每個部分編號。由於您的錄製部分編號取決於桌面視圖,所以您必須等待刷新(您不必經常自己撥打電話)。

您只需找到/設法爲每個查看,讓你知道哪一個是哪個,而不管順序。

設置一個計時器的時間「短」期後致電reloadData如果用戶結束了(我想我可以添加定時器觸發之前出不同步的頭相互作用似乎哈克和有點冒險一個狀態變量來防止這種情況,呃)。

我同意這看起來很無禮,很好的本能。添加一個狀態變量來防止這種情況比每個視圖的字典和跟蹤系統的工作要少,但我認爲它也會屬於'hacky解決方案'。

+0

正如我在問題中提到的那樣,我可以跟蹤標題視圖,但我問:我怎樣才能避免泄漏它們?何時使用自定義頁眉/頁腳視圖「完成」表格視圖?如果我保留對標題視圖的引用(例如,在字典中),以便我可以更新它們的標籤,我怎麼知道何時可以發佈它們?附:使用帶狀態變量的延遲重新加載來防止視圖的不同步使用非常簡單,並且可以保留段刪除動畫。但我仍然想知道如何做到這一點「正確」,並知道我何時可以從我的字典中發佈意見。 – Bogatyr 2010-10-16 11:45:37

+0

當部分中的所有行都消失後,頁眉和頁腳也應該消失。問題是你必須對多個部分進行明智的選擇,哪些部分是謹慎的,並且使用某種檢查方式,以便在正確的索引中刪除正確的視圖。 – JoePasq 2010-10-16 15:48:07

+0

在某個部分滾動屏幕時,UITableView將釋放該部分的自定義視圖。我想知道這是什麼時候發生的。那可能嗎?否則,我必須永遠堅持所有的自定義標題視圖,直到表被銷燬。這正是我想要避免的。 – Bogatyr 2010-10-27 10:39:49

0

你不需要重新加載表;只是更新標籤屬性。在你刪除行的代碼中;你有權訪問標題視圖嗎?如果沒有,您可以使用觀察模式在行被刪除時提醒標題視圖。

+0

我知道我可以跟蹤標題視圖(正如我在我的問題中指出的那樣),但是如何避免泄漏它們? – Bogatyr 2010-10-16 11:46:00

相關問題