Поскольку вы используете [arr count]
в качестве возвращаемого значения для tableView:numberOfRowsInSection:
, в конце блока beginUpdates…endUpdates
tableView ожидает, что в каждой из ваших секций tableView будет две строки, но ваш вызовinsertRowsAtIndexPaths:
указывает только на то, что строка находится в разделе 0.
Вам нужно исправить tableView:numberOfRowsInSection:
, чтобы он возвращал разные значения в зависимости от раздела:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section == 0) {
return [arr count];
} else {
return 1;
}
}
Обратите внимание, что естьс вашим tableView происходит много подозрительных вещей: у вас есть два раздела, но вы показываете одну и ту же строку 0 в каждом разделе.И поведение вставки внутри ваших разделов довольно шаткое: вы начинаете показывать только одну строку, соответствующую регистру 0 в вашем switch
, затем вы указываете, что вставляете строку в строку 0, после чего вы будете показыватьстрока case 0 в строке 0 и строка case 1 в строке 1. Таким образом, вы действительно должны вставить строку в строку 1 вместо строки 0:
NSArray *insert0 = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:1 inSection:0]];
[self.myTableView insertRowsAtIndexPaths:insert0 withRowAnimation:UITableViewRowAnimationBottom];