2011-10-09 40 views
0

裏面我的cellForRowAtIndexPath設置我UILabel的之一,有以下文字:的cellForRowAtIndexPath滯後問題

cell.detail.text = [[poll objectForKey:@"parent"] objectForKey:@"name"]; 

然而,這會導致細胞落後,我向上和向下滾動的單元格,這只是第一次。第一次完成從頂部到底部的滾動(這是滯後部分)後,再次嘗試第二次(從上到下滾動)。這不會滯後。爲什麼是這樣?這裏是我的完整代碼:

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

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

    if (cell == nil) { 
     NSArray * nib = [[NSBundle mainBundle] loadNibNamed:@"VSCustomCell" owner:self options:nil]; 
     cell = (VSCustomCell *)[nib objectAtIndex:0]; 
     [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
    } 


    [cell.main setFont:[UIFont fontWithName:@"cafeta" size:14]]; 
    [cell.detail setFont:[UIFont fontWithName:@"Bebas" size:8.0]]; 
    [cell.detail setTextColor:[UIColor grayColor]]; 

    PFObject * poll; 

    [cell.stats setHidden:NO]; 
    [cell.stats setEnabled:YES]; 
    [cell.stats addTarget:self action:@selector(stats:) forControlEvents:UIControlEventTouchUpInside]; 
    [cell.stats setTag:indexPath.row]; 

    poll = [self.spotsResults objectAtIndex:indexPath.row]; 
    if (poll){ 
     cell.main.text = [poll objectForKey:@"question"]; 
     cell.detail.text = [[poll objectForKey:@"parent"] objectForKey:@"name"]; 
    }  
    return cell;  
} 
+0

表中有多少行?如果您確信它是緩慢的objectForKey方法,則可能需要從您的'PFObject'類中發佈一些代碼。此外,除非在代碼中的其他位置發生更改,否則所有setFont和setHidden都可以進入if cell == nil語句。 – jrturton

+0

VSCustomCell有多複雜?這意味着它有多少個子視圖?定製單元落後於許多uiviews是一個常見問題,如果出現這種情況,有幾種解決方案。 – adamsiton

+0

有3個子視圖 – xonegirlz

回答

0

以後滾動變得很快意味着單元格正在被重用。這是好的跡象。 所以問題出現在第一階段,即在創建單元部分if(cell == nil){}。嘗試再次爲單元格創建xib(不要忘記爲xib中的單元添加重用標識符)。

+0

如果是這樣的話,那麼爲什麼如果我註釋掉上面的字典代碼字典,它變得快? – xonegirlz

+0

也是什麼意思是通過在xib中重用單元標識符?一些代碼會幫助 – xonegirlz

+0

我也檢查過它只創建4個單元,然後剩下的就是重用,重用時它也慢 – xonegirlz