2012-06-15 127 views
1

我在這裏看到了與此相關的其他問題,但我已經找到了解決方案,而且當我滾動時,事情仍然在移動。UITableView在滾動時移動單元格內容

基本上,我有一個數據表,我想第一個和唯一的第一行有一個UITableViewCellAccessoryDisclosureIndicator。問題是,當我滾動時,指示器會重複,刪除並移動到其他單元格。這裏是我的代碼..

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = (UITableViewCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if(cell == nil){ 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    }  

    if(indexPath.row == 0) {  
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;   
    } 

    cell.textLabel.text = [tabledata objectAtIndex:indexPath.row]; 

    return cell; 
} 

的問題是一些與indexPath.row變量..它在不屬於最早的其他細胞能夠返回0(當它涉及到展示細胞)。無論其...數據永遠是正確的,從我的數組(這意味着該值是正確的),並在我的

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 

方法,我只是想改變屏幕的行0被點擊時..而不管在那裏我滾動到,沒有細胞觸發,除了第一個。所以看起來這種檢查總是正確的,而cellForRowAtIndexPath中的一個不是......

回答

1

很可能,您正在重新使用已設置了accessoryType集合的單元格。您需要明確地將其設置爲不在不應顯示的單元格上顯示。

if(indexPath.row == 0){  
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;  
} else { 
    cell.accessoryType = UITableViewCellAccessoryNone; 
} 
+0

哦哇..我會假設,當你重新使用細胞時,所有的信息被卡住。它實際上保留了那個? *編輯*這是問題。謝啦。我永遠不會想到發生的事情。 –

+0

當我第一次開始使用UITableview時,它讓我感到困惑。我猜想tableview沒有辦法知道單元格應該如何看待它們的「原始」狀態,所以它們只是給你任何緩存並讓你處理它! –

相關問題