Неважно, как tableView:cellForRowAtIndexPath:
, если вы хотите скрыть или удалить ячейки.Табличное представление вызывает этот метод только тогда, когда оно знает, что ячейки существуют.Это зависит от того, что вы возвращаете в методах numberOfSectionsInTableView:
и tableView:numberOfRowsInSection:
.В большинстве случаев первое возвращает 1
, поэтому, если вы хотите исключить целый раздел, у вас должен быть какой-то маркер, например sectionHidden
, который является логическим значением, указывающим, является ли раздел скрытым или нет.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if ( sectionHidden )
return 0;
else
return 1;
}
и где бы вы ни захотели инициировать действие удаления, сделайте что-то вроде этого,
sectionHidden = YES;
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0]
withRowAnimation:UITableViewRowAnimationFade];
и переверните его на do sectionHidden = NO
и позвоните reloadSections:withRowAnimation:
.
То жеЭто применимо к строкам, где вам придется изменить метод tableView:numberOfRowsInSection:
, чтобы отразить, что вы удалили или скрыли строки.На этот раз вы должны использовать reloadRowsAtIndexPaths:withRowAnimation:
вместо reloadSections:withRowAnimation:
метода.