У меня есть этот код для UITableView с двумя столбцами, которые я нашел в Интернете. Он прекрасно работает всякий раз, когда я добавляю к нему еще одну строку, но когда я выбираю строку, которую нужно удалить, она просто удаляет последнюю строку. Я просто добавляю строки в конец массива с помощью [NSMutableArray addObject:], но когда я удаляю строку, сначала выбираю строку, которую нужно удалить.
здесь выбирается строка ------ (я проверил, что tableViewIdx был верным)
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
tableViewIdx = [indexPath row];
}
затем кнопка удаления ------ (я проверил, действительно ли объект был удален из массива)
-(IBAction)bt_DeletePressed:(id)sender{
[mutableArray removeObjectAtIndex:tableViewIdx];
//delete actual content
for(int i = VStableViewIdx;i<10;i++){
g_vitals[i] = g_vitals[i+1];
}
[TableView reloadData];
tableViewIdx--;
}
и часть кода tableView
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
int count = [listData count];
if(self.editing) count++;
tableSize = count;
return count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *MyIdentifier = [NSString stringWithFormat:@"MyIdentifier %i", indexPath.row];
MyTableCell *cell = (MyTableCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil){
cell = [[[MyTableCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm"];
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0.0, 0, 60.00,tableView.rowHeight)] autorelease];
[cell addColumn:60];
label.font = [UIFont systemFontOfSize:12.0];
label.text = textView.text;
[formatter release];
label.textAlignment = UITextAlignmentRight;
label.textColor = [UIColor blueColor];
label.autoresizingMask = UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleHeight;
[cell.contentView addSubview:label];
label = [[[UILabel alloc] initWithFrame:CGRectMake(70.0, 0, 60.0,tableView.rowHeight)] autorelease];
[cell addColumn:500];
label.font = [UIFont systemFontOfSize:12.0];
label.text = [NSString stringWithFormat:@"%d",respRateTemp];
label.textAlignment = UITextAlignmentRight;
label.textColor = [UIColor blueColor];
label.autoresizingMask = UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleHeight;
[cell.contentView addSubview:label];
}
return cell;
}
Есть идеи, почему будет убирать последний ряд вместо выбранного?
РЕДАКТИРОВАТЬ: я на самом деле смог исправить это самостоятельно, используя deleteRowsAtIndexPaths: вместо updateData, однако теперь у меня есть другая проблема. Моя программа отлично работает на симуляторе, но часто вылетает на устройстве. Приходит ошибка:
Программа получила сигнал: "EXC_BAD_ACCESS".
Средство форматирования данных временно недоступно, повторная попытка после продолжения. (Не удается найти функцию dlopen, поэтому невозможно загрузить разделяемые библиотеки.)