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:

enter image description here

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;
}
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top