2011-09-19 71 views
0


有這個愚蠢的小東西令人討厭,我很想聽聽你對此的看法。UITableView佔位符用於出列單元格

我正在使用帶有自定義UITableViewCell的UITableView來顯示RSS提要中的一些新聞項目。這是工作很好,

唯一的問題是 - 當向下滾動,我看到「舊」單元格,並且只有當我的滾動停止時,它會加載新的內容。

所以我的問題是 - 我可以以某種方式把一個佔位符,所以它至少會顯示滾動或其他類型的指示「加載」?

感謝提前:)
夏嘉曦

+0

你能告訴我們你的代碼,特別是cellForRowAtIndexPath和你正在調用更新你的自定義單元格的方法嗎?謝謝 – MartinMoizard

+0

嘿馬丁,這裏是:)謝謝http://pastebin.com/2acWU42Y –

回答

1

你什麼時候你充滿內容的單元格,通常你在UITableViewDataSource

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

這不這樣做將被調用每前,需要一個時間單元顯示它。如果你設置數據格式,這個單元格在顯示之前會被更新。

如果您從網上抓取某些東西需要一些時間,那麼您可以在此處設置從網絡抓取的任何內容到裝載或佔位符圖片。

然後在UITableViewDelegate

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath; 

啓動數據的異步獲取和接收到數據時更新該小區。

+0

willDisplayCell解決方案聽起來正是我所需要的!生病嘗試,謝謝! :) –

+0

嘿,我試過以下沒有成功,任何想法我做錯了什麼? http://pastebin.com/hUGvGt5x –

+0

你在tableview中使用webview嗎?問題在於你對web視圖沒有足夠的控制權。它只會開始加載,我們可以看到它。 – rckoenes

-1

爲避免新單元格中以前數據的重複,請使用唯一的CellIdentifier。

NSString *CellIdentifier = [NSString stringWithFormat:@"%i", indexPath.row]; 
    NewsCell *cell = (NewsCell *) [tableView dequeueReusableCellWithIdentifier: CellIdentifier]; 
    if (cell == nil) 
    { 
     cell = [[ActivitiesCell alloc] initWithStyle:UITableViewStylePlain reuseIdentifier:CellIdentifier]; 
    } 

在NewsCell.m文件,用下面的代碼,並通過調用initWithStyle方法,而不是使用加載新的細胞loadNibNamed

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
    { 
     self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
     if (self) 
     { 
    // Initialization code. 
     } 
     return self; 
    } 
+0

這似乎不是一個好主意,因爲它會在內存中創建許多單元格,而不是重新使用一個這是我想要的 - 我只是想要一種方法來把一些「加載「,而滾動後更新數據。 –

+0

它將重複使用具有相同標識符的相同單元。 –

+0

是的,但它仍然會爲每個單元格創建一個標識符,不是嗎?關鍵是所有細胞都有一個標識符 - 我想。我對UITableView的使用經驗相當缺乏:) –