Заголовок в TableView повторяется несколько раз
У меня проблема с некоторыми заголовками, которые повторяются на экране. Кажется, он появляется, когда я щелкаю текстовое представление в TableViewCell, оно автоматически прокручивается, чтобы поместить ячейку в середину экрана, и я пишу в нее в течение всего этого процесса. Заголовок "повторяется" может быть в нижнем колонтитуле или где-либо еще для информации.
Вот код:
- (NSString *)tableView:(__unused UITableView *)tableView titleForHeaderInSection:(NSInteger)index //HEADER
{
return [[self sectionAtIndex:index].header description];
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UILabel *myLabel = [[UILabel alloc] init];
myLabel.frame = CGRectMake(12, 0, tableView.frame.size.width, 25);
myLabel.font = sectionFont;
myLabel.textColor = sectionColor;
myLabel.backgroundColor = colorSegment;
myLabel.text = [self tableView:tableView titleForHeaderInSection:section];
UIView *headerView = [[UIView alloc] init];
[headerView addSubview:myLabel];
return headerView;
}
2 ответа
В функции textDidChange добавьте эти строки, чтобы предотвратить завершение анимации или нет до начала работы;
[CATransaction begin];
[CATransaction setCompletionBlock: ^{
[self.tableView beginUpdates];
[self.tableView endUpdates];
}];
[CATransaction commit];
Вам не нужно ничего делать с аргументом представления в willDisplayHeaderView
или переслать что-нибудьdelegate
' в viewForHeaderInSection
или же heightForHeaderInSection
(это методы делегата, так что вы - делегат). heightForHeaderInSection
должен возвращать статическое значение, а не UITableViewAutomaticDimension
, что может вызвать проблемы с макетом, если не использовать автоматическое расположение. Ваши представления заголовка получены вашимsectionAtIndex
', но это может быть проще использовать UItableViewDataSource
функция 'titleForHeaderInSection
' вместо 'viewForHeaderInSection
', или генерируйте UILabels на лету.