2010-03-26 37 views
2

我正在使用UITableView來顯示使用Interface Builder創建的自定義單元格。表滾動不是很平滑(它「口吃」),這讓我相信細胞沒有被重用。這段代碼有什麼問題嗎?iPhone UITableView與自定義單元結尾。我怎樣才能讓它順利滾動?

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

static NSString *CellIdentifier = @"TwitterCell"; 
TwitterCell *cell = (TwitterCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (cell == nil){ 
    //new cell 
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"TwitterCell" 
                owner:nil options:nil]; 

    for(id currentObject in topLevelObjects) 
    { 
     if([currentObject isKindOfClass:[TwitterCell class]]) 
     { 
      cell = (TwitterCell *)currentObject; 
      break; 
     } 
    } 

} 

if([self.tweets count] > 0) { 
    cell.lblUser.text = [[self.tweets objectAtIndex:[indexPath row]] username]; 
    cell.lblTime.text = [[self.tweets objectAtIndex:[indexPath row]] time]; 
    [cell.txtText setText:[[self.tweets objectAtIndex:[indexPath row]] text]]; 
    [[cell imgImage] setImage:[[self.tweets objectAtIndex:[indexPath row]] image]]; 
} else { 
    cell.txtText.text = @"Loading..."; 
} 


cell.selectionStyle = UITableViewCellSelectionStyleNone; 

return cell; 
} 
+1

在IB中,單元格的標識符是否設置爲「TwitterCell」? – DyingCactus 2010-03-26 21:35:48

回答

6

也許這個博客條目的(小)成本(特威特的創造者),可以幫助你:http://blog.atebits.com/2008/12/fast-scrolling-in-tweetie-with-uitableview/

切入追逐,這裏有個祕訣:每個表格單元格有一個自定義視圖,並執行自己的繪製。聽起來很簡單?那是因爲它。這實際上比處理大量的標籤和圖像子視圖簡單得多,而且它的速度快了很多(根據我的非正式測試)。

+0

請注意,此實現(「直接繪製」)要求您仔細思考使用UILabels免費獲得的輔助功能。 – Alfons 2010-03-27 13:01:43

+0

我在IB中沒有將單元格標識符設置爲TwitterCell,因此給了我一個明顯的改進......但我認爲這種實現絕對是獲得最佳性能的最佳方式。謝謝! – user2393462435 2010-03-27 18:08:53

0

您可能會發現通過不加載nib並在代碼中完全創建您的自定義單元來加速很多。

否則,你需要做一些分析,找出潛伏在哪裏的隱藏減速。

+1

駕車被negs吸。 – 2010-03-26 22:33:46

2

兩件事情:

  1. 確保電池在IB標識符匹配您要查找的內容在cellForRowAtIndexPath方法
  2. 不太可能是罪魁禍首,但性能的調整nontheless,緩存「分享Tweet 「你拉出來,以避免抓住了這一點,從阿特比茨的NSArray的
0

如果您使用nib文件加載表格視圖單元格,那麼顯然它需要一段時間才能加載,並且會給出一種干擾的感覺。

所以這樣做的最好方法是使用代碼設計視圖和覆蓋的方法

drawInRect

這會給你的應用程序中的UITableView的情況下非常流暢的滾動。

相關問題