2012-04-03 86 views
2

是否有一種可能的方式來調用(或自定義)reloadData方法讓表視圖爲其所有行(不僅是可見的)重新加載數據?所有行的UITableView的reloadData

在此先感謝。

+2

由於表視圖期望在滾動過程中重用單元格,所以看起來不太可能。在一個非常真實的意義上,許多不可見的「行」甚至不存在。你想要達到這個目標的更高層次的目的是什麼(......也許有不同的方法)? – 2012-04-03 14:52:49

+1

@phillipMills我想在這裏解決我的問題:http://stackoverflow.com/questions/9989495/too-many-uilabels-with-unicode-text在簡短的介紹中,我在第一次滾動我的過程中遇到了一些問題當它包含了很多帶有每個標籤中的unicode文本的標籤時,我很確定我的代碼是乾淨的,沒有單個內存泄漏或者在那裏出現故障,因此我決定在表視圖調用reloadData時添加一個ActivityIndi​​cator視圖第一次,然後讓表視圖重新加載所有行中的所有數據,然後在發出某些通知後停止該指示器視圖。 – JAHelia 2012-04-03 15:01:03

+0

我非常自信,你需要指出我們在執行「可重用單元」以及「提取數據」方面做錯了什麼。如果你發佈你的代碼,也許人們可以對此發表評論,特別是你想發佈'cellforrowatindexpath'以及你用來填充fetchresultscontroller的任何內容。 – Ali 2012-04-03 15:08:40

回答

1

那些不可見的行甚至沒有!我的意思是沒有細胞旁邊的可見的加上一個或兩個更多的邊緣。
所以我想你的答案是沒有辦法做到這一點,或者你需要解釋更多爲什麼你需要這樣做!

+0

請看我上面的評論。 – JAHelia 2012-04-03 15:02:50

0

[tableView reloadData]只會刷新可見單元格。單元格的數據應該與tableview分開,你可以通過創建一個方法來重新加載它。重新加載包含單元格中呈現的數據的內部項目數組。

2

您不需要自定義reloadData。如上所述,屏幕外的單元格實際上並不存在。他們坐在重用隊列中(希望),等待被拉到屏幕上。一旦他們要在屏幕上移動,表視圖將tableView:cellForRowAtIndexPath:發送到其數據源。在這裏,您爲特定行配置了特定單元上的所有內容。

您可能需要考慮創建一個包含單元格數據的數組。所以,如果你有100個單元的數據,創建一個包含100個項目的數組。如果只有單元格10-15可見,但需要更新將在單元格89中顯示的數據,只需訪問該數組的第89個元素,然後進行適當的更新。一旦您向下滾動到第89個單元格,您只需訪問indexPath.row處的數組。