в моей таблице (UITableView
) Я использую ячейки с UITextField
istead, равным UILabel
, добавленным в ячейку с помощью "addSubview". Мне это нужно, потому что я хочу, чтобы мои ячейки стали непосредственно редактируемыми. В качестве ячейки я использую UITableViewCellStyleDefault
. - Все работает отлично: я могу добавлять и редактировать ячейки в любое время.
Однако удаление создает проблему: когда я «удаляю» ячейку и создаю reloadData
таблицу, ячейка по-прежнему отображает свое старое содержимое вместе с новым. Также то же самое для всех клеток ниже. Когда я закрываю свое приложение и запускаю его снова, таблица отображается правильно.
Здесь код, который я использую для удаления ячейки
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath {
NSUInteger row = [indexPath row];
NSUInteger count = [datas count];
if (row <= count) {
NSString* data = [datas objectAtIndex: [indexPath row]];
[self deleteDatas:data];
}
[self.locationTable reloadData];
}
Где в deleteDatas
Я просто удаляю соответствующие данные из файла, который работает правильно, как "доказано" новой загрузкой приложения.
Здесь
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
longPressGesture.minimumPressDuration = 2.0;
[cell addGestureRecognizer:longPressGesture];
}
// Configure the cell.
// table cell with uitextfield instead of lable.
UITextField* textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 10, 185, 30)];
textField.enabled = NO;
[cell.contentView addSubview:textField];
NSUInteger count = [datas count];
NSUInteger row = [indexPath row];
// last cell is empty to edit it
if (row+1 < count) {
textField.text = [datas objectAtIndex:[indexPath row]];
[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
}
return cell;
} * * тысяча двадцать-один
Есть идеи? - Спасибо
Любая идея, почему моя ячейка показывает в два раза больше содержимого (один раз из исходной ячейки и один раз из содержимого ячейки ниже?) - я думаю, что s.th. неправильно с перезагрузкой клетки. - Возможно ли, что текстовое поле создает проблемы? - Как я могу это выяснить?