iPhone SDK: Como adicionar a Subview de Imagem ao UitableViewController e ainda ver células?

StackOverflow https://stackoverflow.com/questions/2449945

Pergunta

Estou adicionando uma subview de imagem a um uabableViewController com uma tabela agrupada. Depois de adicionar a subview da imagem, posso ver os cabeçalhos da tabela em cima da imagem, mas as células estão sendo desenhadas atrás da imagem.

Há algo mais que preciso fazer para garantir que as células da tabela apareçam na parte superior da imagem em segundo plano? Aqui está o código que estou usando no UitableViewControlle's ViewDidload:

CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 959.0f); 
UIImageView *backImageView = [[UIImageView alloc] initWithFrame:myImageRect]; 
[backImageView setImage:[UIImage imageNamed:@"somebackground.png"]]; 
[self.view addSubview:backImageView];
[self.view sendSubviewToBack:backImageView];
[backImageView release];

Percebo que, como alternativa, eu poderia simplesmente criar uma visualização composta e soltar a visualização de mesa em cima dela, e não o que estou tentando fazer aqui. Se não houver outra solução, farei isso, mas preferiria usar a abordagem que estou tentando, se possível.

Foi útil?

Solução 2

Parece que o UitableView geralmente reorganiza a Zorder de Visualizações ao refrescante. Portanto, você precisa gerenciar manualmente a redefinição da Zorder em qualquer evento de tabela, como inserção/exclusão/atualização de linhas.

Outras dicas

É uma visão de tabela agrupada. Do Apple Docs:

The grouped style of table view provides a default background color and a default background view for all cells.

Isso significa que há uma visualização de imagem padrão sendo inserida atrás da sua mesa. Você quer substituir isso por sua própria visão, assim:

CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 959.0f); 
UIImageView *backImageView = [[UIImageView alloc] initWithFrame:myImageRect]; 
[backImageView setImage:[UIImage imageNamed:@"somebackground.png"]]; 
self.tableView.backgroundView = backImageView;

Isso substitui a outra visão de fundo por sua. Caso contrário, quando a visualização da tabela for apresentada novamente, essa outra imagem de fundo sobreporá a sua.

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