2012-01-17 2 views
0

У меня есть UITableViewCell. Я могу добавить и вычесть 1 из ячейки textLabel, и я также могу удалить ячейки. Вот моя проблема. Предположим, я добавлю 5 к значению textLabel. И эта ячейка находится на 0 indexPath (первая ячейка в таблице). Когда я удаляю эту ячейку, и теперь больше нет ячеек в таблице, я добавляю новую ячейку, и эта новая ячейка автоматически получает то же значение, что и удаленная ячейка. SO, эта новая ячейка будет иметь значение 5, и я хочу, чтобы ячейка имела значение 1, как и каждая ячейка, когда она будет добавлена. Это происходит только тогда, когда ячейка удаляется, и новая ячейка добавляется в тот же самый индекс. Поэтому мой вопрос: мне нужно удалить эти ячейки «память» или «данные», чтобы это было исправлено? Спасибо за помощь!Удалить UITableViewCell и ВСЕ данные этой ячейки

CellForRowAtIndexPath:

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

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
     addBtn = [[UIButton alloc]init]; 
     addBtn =[UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [addBtn setFrame:CGRectMake(220,10,25,55)]; 
     [addBtn addTarget:self action:@selector(addLabelText:) forControlEvents:UIControlEventTouchUpInside]; 
     [addBtn setTitle:@"+" forState:UIControlStateNormal]; 
     [addBtn setEnabled:YES]; 
     [cell addSubview:addBtn]; 

     subBtn = [[UIButton alloc]init]; 
     subBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [subBtn setFrame:CGRectMake(260,10,25,55)]; 
     [subBtn addTarget:self action:@selector(subtractLabelText:) forControlEvents:UIControlEventTouchUpInside]; 
     [subBtn setTitle:@"-" forState:UIControlStateNormal]; 
     [subBtn setEnabled:YES]; 
     [cell addSubview:subBtn]; 

     //cell.textLabel.text = @"1"; 


    } 
    //cellText.hidden=!self.editing; 
    [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
    cell.imageView.image = [imageArray objectAtIndex:indexPath.row]; 
    cell.textLabel.text = [number objectAtIndex:indexPath.row]; 


return cell; 
} 
+0

Не могли бы вы выслать код для метода 'cellForRowAtIndexPath:'? Похоже, вы не правильно настроили значение textLabel там после того, как вы 'dequeueReusableCellWithIdentifier:' – jonkroll

+0

опубликовали некоторый код вашего UITableView, откуда берется значение textLabel? массив? или что-то еще, это также возможно, потому что ячейка повторно используется. Опубликовать свой - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath, если возможно –

+0

@jonkroll уверен, что опубликую его сейчас! – iProRage

ответ

2

Когда клетки удаляются или уходят экран, вид таблицы сохраняет их и повторно их позже. Поэтому вам нужно сбросить значение textLabel в tableView:cellForRowAtIndexPath:. Ссылка UITableViewCell класса говорит, что это:

делегат табличного представления в Tableview: cellForRowAtIndexPath: всегда должен сбросить все содержимое при повторном использовании ячейки.

+0

ладно, как я должен это делать? Должен ли я установить 'cell.textLabel.text = @" 1 ";' или есть ли другой способ сделать это? также я должен положить его в 'if (cell == nil)' statement? Большое спасибо за помощь!! – iProRage

+0

, пожалуйста, помогите! Я искал ответ, и я просмотрел документацию, спасибо! – iProRage

+1

Вам нужно инициализировать 'cell.textLabel.text' значение, соответствующее' indexPath'. Обычно это означает, что вам нужно использовать 'indexPath.row' (и, возможно,' indexPath.section') для поиска соответствующего значения в массиве или таблице базы данных. –

Смежные вопросы