<NSInternalInconsistencyException> Неверное обновление: неверное количество разделов - PullRequest
0 голосов
/ 14 января 2012

Я добавляю пользовательский текст в UItableView через контроллер модального представления.Таблица создается как NSMutableArray.при вводе данных в модальном виде и нажатии кнопки «Готово» a Недопустимое обновление: неверное количество разделовошибка генерируется.Я должен обновить массив, когда пользователь вводит данные, но не уверен, как это сделать.Я приложил соответствующий код.Спасибо за ваш совет.

//Number of sections
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } 
//Number of rows
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return  [listOfConjProcedures count];
}

//Loading the cells
- (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];

    }

    // Configure the cell.

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

    return cell;
}

//Done button Delegate for the modal view
- (void)itemDetailViewController:(ItemDetailViewController *)controller didFinishAddingItem:(ChecklistItem *)item
{
    int newRowIndex = [listOfConjProcedures indexOfObject:item];
    [listOfConjProcedures addObject:item];

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:newRowIndex inSection:0];
    NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
    [self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
    [self dismissViewControllerAnimated:YES completion:nil];

}

1 Ответ

1 голос
/ 14 января 2012

Я думаю, что ваша проблема может быть здесь:

int newRowIndex = [listOfConjProcedures indexOfObject:item];

У этого не будет индекса, если вы уже не добавили его в массив, но в следующей строке вы добавите его в массив,так что это не имеет смысла.

Я думаю, что вы, следовательно, добавляете строку с индексным путем 0, NSNotFound, что приведет в замешательство табличное представление.Либо используйте счетчик массива в качестве индекса строки, либо вставьте новую строку в начало (0,0) таблицы (и в индекс 0 массива).

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