Я нашел решение этой проблемы. Я создал два вспомогательных метода в моем контроллере представления для виртуализации разделов, которые передаются мне делегатами tableView. Виртуальные секции приводят к тому, что написанная мной логика пропускается всякий раз, когда я собираюсь отключить секцию в своем табличном представлении.
- (NSIndexPath *)virtualIndexPath:(NSIndexPath *)indexPath {
return [NSIndexPath indexPathForRow:indexPath.row inSection:[self virtualSection:indexPath.section]];
}
- (NSUInteger)virtualSection:(NSUInteger)section {
NSUInteger virtualSection;
if ([self.entryMode isEqualToString:@"ADD"])
virtualSection = section;
else if ([self.entryMode isEqualToString:@"EDIT"]) {
if (section == 0)
virtualSection = section;
else if (section > 0)
virtualSection = section + 1;
}
return virtualSection;
}
Затем я вызываю один из вышеперечисленных методов в остальной части приложения.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSUInteger virtualSection = [self virtualSection:section];
if (tableView == self.customEntryTableView) {
if (virtualSection == 0) {
// Additional code....
В дополнение к этому я также изменил -tableView: numberOfSectionsInTableView: метод, чтобы возвращать правильное количество секций на ADD и режим EDIT.
Поскольку это всего лишь обходной путь, я оставлю этот вопрос отмеченным без ответа.