Удаление из UITableView и поддержка источника данных в iOS 4 - PullRequest
1 голос
/ 23 июня 2011

Я немного озадачен этим после прочтения документации Apple и поиска в Google. Суть проблемы в том, что я знаю, что мне нужно удалить из UITableView и источника данных (в данном случае NSMutableArray), но это не позволит мне сделать это независимо от того, в каком порядке я это делаю.

- (void)tableView:(UITableView *)tableView commitEditingStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {        
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
        [myMutableObjectList removeObjectAtIndex:indexPath.row];
    } else if (editingStyle == UITableViewCellEditingStyleInsert) {
        // not used
    }   
}

Независимо от того, какой порядок я использую для этих двух:

     [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]  withRowAnimation:UITableViewRowAnimationFade];
     [myMutableObjectList removeObjectAtIndex:indexPath.row];

Он либо жалуется на то, сколько осталось элементов, либо говорит, что удаление не произошло.

"(Количество) до удаления должно совпадать (количество) после удаления минус сколько бы вы ни удалили 0 вставок 1 удаление"

Сначала [tableView ....] говорит, что счет тот же, с 1 желаемым удалением.

Сначала [myMutableObjectList ...] говорит, что счетчик на 1 меньше (хорошо!), Но удаление должно произойти.

Если у меня не получится, в любом случае, что мне делать?

Обновление:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {   
   if([myMutableObjectList count] == 0) {
      return section; 
   } else {
    return 4; //4 variables in myObject
   }
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{   
    NSLog(@"Size of list: %d", [myMutableListList count]);
    if([myMutableList count] == 0) {
        return 100;
    } else {
        return [myMutableList count];
    }
}

1 Ответ

1 голос
/ 24 июня 2011

Ваш numberOfRowsInSection не соответствует поведению, к которому вы стремитесь. Это никогда не отразит изменения в вашем хранилище данных.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {   
   if([myMutableObjectList count] == 0) {
      return section; 
   } else {
    return 4; //4 variables in myObject
   }
}

Почему вы возвращаете раздел здесь. Я полагаю, вы хотите вернуть [myMutableObjectList count]

Этот метод должен отражать текущий счетчик всех ячеек. Когда вы делаете удаление, вы удаляете объект из myMutableObjectList, но это изменение не повлияет на результат вашего метода numberOfRows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...