Quadro de viewForHeaderInsection é sempre do mesmo tamanho
-
20-09-2019 - |
Pergunta
- (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;
}
}
Esta é a minha implementação do ViewForHeaderInsection, mas qualquer quadro que eu faço, está sempre me mostrando o mesmo quadro vermelho. Você vê algum problema com meu código?
Imagem:
ATUALIZAR:
MHM Agora, meu bloco vermelho é mais alto, mas meu primeiro tabela está agora escondido. O primeiro foi implementado com o titleForHeaderInsection. Eu pensei em implementar a altura da altura da tabela, mas isso não funciona
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
if(section == 1)
return 30;
else
return tableView.tableHeaderView.frame.size.height;
}
Solução
Você precisa implementar este método de delegado
- (CGFloat)tableView:(UITableView *)tableView
heightForHeaderInSection:(NSInteger)section;
No seu caso, você pode simplesmente return 30;
.
Também, você está vazando view
!
Sua [view release]
acontece depois do return
. Mas assim que o return
acontece a execução do método é abortada e seu release
nunca é chamado.
Então você quer isso em vez disso
UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 30)] autorelease];
E se livrar do explícito release
abaixo.