2013-12-16 51 views
0

這是一個非常奇怪的錯誤。我會嘗試是最好的,我可以解釋,但我做了一個視頻給你看(見下文)UITableView滾動不「流動」(帶視頻演示)

有時,當我們推到一個tableview中我們的導航控制器,滾動行爲像這樣的:

視頻的問題在這裏:http://tinypic.com/r/30nkyol/5

  • 輕拂將無法正常工作。如果您輕掃滾動視圖,則輕彈後它將不會繼續移動。只要你放開手指,桌面視圖就會停止。
  • tableview不反彈。正因爲如此,你可以超越平常的範圍。

這幾乎就像減速度設置爲非常高,以便滾動視圖在被觸摸後立即消除。

退出應用程序並重新啓動可修復此問題。另外,我們在一個單獨的視圖控制器上有另一個tableview,並去那個tablieview從來沒有問題。

我想知道你是否曾經見過這個問題?或者這是一個iOS現象?

我們的cellForRowAtIndexPath:

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    SPMark* mark = self.datasource[indexPath.section]; 
    NSString* reuseId = [SPHomeViewController cellIdentifierFromData:mark]; 
    SPTableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:reuseId]; 
    if (cell == nil) { 
     cell = [SPTableViewCell cellFromMark:mark reuseID:reuseId]; 
     [cell updateView:NO]; 
    } 
    [cell addDataToCell:mark]; 

    if (indexPath.section >= self.datasource.count - 2 && !self.isLoadingData && self.pageNumber != -1) 
     self.fetchNextPage = YES; 

    NSLog(@"SUBVIEWS: %d", self.view.subviews.count); 

    return cell; 
} 
+0

共享代碼是必要的。沒有它,我們只能猜測。顯示您認爲相關的代碼部分。如果需要更多,有人會問。 – CaptJak

回答

0

你處理你的圖像

- (void)prepareForReuse 

在你的UITableViewCell

看起來你對你的細胞,一個公平的幾個,其中多個子視圖所以只是給它一個重用的標識符是不夠的。你總是可以先將所有圖像設置爲零,這可能會使它們消失,然後逐漸改變處理它們的方式,直到它不會出現記憶。

這是TableViews中的一個很常見的問題,所以請看herehere,以獲取有關改進tableView滾動的一些提示。

你的主要問題是內存,所以使用儀器來看看它是什麼東西,一般人最終需要緩存他們的圖像或渲染一切到單一的視圖,所以只需要緩存和重新繪製。

+0

我已經添加了我們的cellForRowAtIndexPath。你怎麼看? – evenodd

+0

會更好地看到我設想的你的SPTableViewCell的實現。 – Tomskiis

+0

http://pastebin.com/YG2e4GZ4 – evenodd