UitableViewController não redesenhando o novo rótulo de texto de célula após o PopViewControlleRenimated

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

Pergunta

Eu tenho um problemático UabableViewController Não redefine uma célula atualizada após a remoção de uma visualização da criança.

Aqui está o que está acontecendo. Depois de alterar os dados em uma visão da criança, o controlador de visualização pai recarrega a matriz de dados de origem e é executada TableView Reloaddata através de uma pós -nota. Depois disso gatilhos, eu uso PopViewControlleRenimated Para retornar ao pai UitableViewController (isso retira a criança da pilha e revela o controlador um nível para cima).

No entanto, meus dados atualizados não aparecem no controlador de visualização pai! De acordo com o depurador, o rótulo da célula foi atualizado, mas o rótulo visível não muda. No entanto, se eu rolar a tabela, movendo momentaneamente a célula atualizada para fora, quando reaparece o rótulo é atualizado!

Eu também tento ligar TableView Reloaddata através da Viewwillappear Mas a questão ainda persiste.

Aqui estão algumas informações adicionais que podem ser úteis. Eu tenho 3 visualizações estruturadas assim:

1/  SettingsViewController : UITableViewController
2/  -- UserView : UITableViewController
3/  ---- UserDetailsView : UIViewController <UIActionSheetDelegate>

Estou chamando o userDetailsView de dentro do UserView da seguinte forma:

 UserDetailsView *userDetailsView = [[UserDetailsView alloc] init];
 [self.navigationController pushViewController:userDetailsView animated:YES];

Se eu voltar ao controlador mais importante (SettingSViewController) e, em seguida, carregue o Controlador Problema (Userview), tudo será desenhado corretamente. Somente quando retorna de uma visão da criança que esse problema ocorre.

Agradeço antecipadamente por suas sugestões.

Foi útil?

Solução

Finalmente trabalhou este depois de cerca de uma hora de codificação emparelhada.

Depois de um tempo, notamos que Tabelaview sempre foi nulo Sempre que enviamos a mensagem Reloaddata. Como você deve saber no objetivo C, objetos nulos aceitam qualquer mensagem sem reclamação.

Acontece que "alguém" (ahem, desculpe que fui eu) havia definido essa linha no arquivo de cabeçalho.

 UITableView *tableView;

Agora, seus cookies inteligentes por aí saberão isso porque estendemos o UITaleViewController, Não precisamos fazer um ponteiro para a TableView nós mesmos. Com efeito, substituí o membro herdado da tabela por um objeto nulo.

Mistério resolvido. Espero que isso ajude outra pessoa lá fora também! : D

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