Я создал собственный файл XIB с UIView, который я хотел отображать в виде UITableView
as для заголовка в разделе. Я правильно реализовал необходимые методы делегата, как, конечно же:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:
(NSInteger)section
{
if (tableView == self.messageTableView) {
TableViewHeaderView *header = [[[NSBundle mainBundle]
loadNibNamed:@"TableViewHeaderView" owner:self options:nil] lastObject];
[header.titleLabel setText:@"A String"];
[header.addressLabel setText:@"Another String"];
[header sizeToFit]; //I tried it with and without this line,
// does not seem to help
return header;
}
return nil;
}
Таким образом, класс TableViewHeaderView
является подклассом UIView
.
Казалось, все работает достаточно хорошо, я действительно использовал этот подход и в некоторых других проектах, и все, казалось, работало хорошо. Тем не менее, я столкнулся с довольно странной и случайной ошибкой: запустив приложение и поэкспериментировав с данными Tableview, некоторые представления Sectionheader-View иногда отображаются неправильно, как на следующем экране. Из-за моей новой учетной записи на этом форуме я не могу вставить изображение прямо в это сообщение. Но вместо этого вы можете использовать ссылку (извините за это):
http://i.stack.imgur.com/JSeVz.png
В этом примере UITableView
имеет восемь секций. Как вы можете ясно видеть, представления заголовка раздела «Отправка 3,4,5» совершенно неуместны. Они застревают на своем месте и перемещаются при прокрутке таблицы. Однако, когда вы прокручиваете таблицу вниз, они появляются во второй раз в правильном месте.
Кстати: я не использую AutoLayout в этом проекте, представление имеет правильную высоту, соответствующую методу делегата heightForHeaderInSection:
, и ту же ширину, что и базовое табличное представление. Автоматический размер HeaderView, а также базового UITableView установлен на:
http://i.stack.imgur.com/Ms0ZC.png
Перезагрузка таблицы тоже не помогает.
Кто-нибудь знает, что там не так? Я не имею ни малейшего понятия. Или этот подход с использованием пользовательских представлений является старомодным?
Спасибо за вашу помощь!