Рамка viewForHeaderInSection всегда имеет одинаковый размер.
-
20-09-2019 - |
Вопрос
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if(section != 0) {
UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 30)] autorelease];
view.backgroundColor = [UIColor redColor];
return view;
} else {
return tableView.tableHeaderView;
}
}
Это моя реализация viewForHeaderInSection, но какой бы кадр я ни делал, он всегда показывает мне одну и ту же красную рамку.Вы видите какие-либо проблемы с моим кодом?
Изображение:
ОБНОВЛЯТЬ:
Ммм, теперь мой красный блок выше, но мой первый tableHeader теперь каким-то образом скрыт.Первый был реализован с помощью titleForHeaderInSection.Я думал, что просто реализую высоту высоты tableHeader, но это не работает.
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
if(section == 1)
return 30;
else
return tableView.tableHeaderView.frame.size.height;
}
Решение
Вам необходимо реализовать этот метод делегата
- (CGFloat)tableView:(UITableView *)tableView
heightForHeaderInSection:(NSInteger)section;
В вашем случае вы можете просто return 30;
.
Также, у тебя течет view
!
Твой [view release]
происходит после того, как return
.Но как только return
случается, что выполнение метода прерывается, и ваш release
никогда не вызывается.
Итак, вы хотите этого вместо этого
UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 30)] autorelease];
И избавьтесь от явного release
внизу.