Pergunta

O aplicativo mostra informações sobre planetas, suas luas e etc. Ele mostra uma lista de planetas, deixe o usuário selecionar um planeta e ver seus detalhes e, em seguida, marcar/não marcar -o. Eu tenho uma visualização que mostra aos usuários os detalhes do planeta selecionado, ele também contém um botão Adicionar/Remover marcador. Se o usuário clicar nesse botão, esse favorito será adicionado/removido e outra visualização será empurrada sobre a visualização atual para dizer ao usuário que o marcador foi excluído.

Agora, a pergunta é quando o usuário clica no botão Back/Planet Detalhes à esquerda da barra de navegação mostrada na visualização de status e ele volta à exibição do planeta Detalhes, ele ainda é mostrado o botão Adicionar/Remover (o que foi mostrado anteriormente), enquanto ele Agora deve ser removido/add (de acordo com o botão carregado anteriormente) de acordo com o código que escrevi.

O que eu posso entender é que, quando o usuário clica nesse botão de volta, a visualização anterior não é recarregada, a visualização de status é exibida. Existe uma maneira de fazer o aplicativo executar o setNeedsDisplay ou algo que poderia recarregar o código do marcador ViewDidload quando o usuário clicar no botão Voltar na exibição de status?

Ou há outra solução possível?

É muito confuso para o usuário, pois ele acha que ele acabou de remover/adicionar o marcador, mas o botão ainda está pedindo que ele adicione/remova ...

Essa visualização de status também é usada por outra seção do código para mostrar resultados ao usuário de uma ação, para que eu não possa alterar seu código ou posso verificar a visualização anterior, verifique se eram detalhes do planeta e depois Recarregue seu conteúdo ...

Foi útil?

Solução

Pegue o código que define o botão no método ViewDidload e mova -o para o ViewWillappear. Ele deve atualizar o botão corretamente quando você entra novamente na visualização.

Outras dicas

Encontrei uma solução: esse código (alteração do botão depois que um PopViewController ou tais eventos) deve ser escrito no ViewWillapear para fazê -lo executar sempre que a visualização é carregada, não importa o quê.

Agradecemos a Quentarez e Crackity_jones no #iphoneDev em irc.freenode.net.

defina o delegado correto e

- (void)navigationController:(UINavigationController *)navigationController
                 willShowViewController:(UIViewController *)viewController
                 animated:(BOOL)animated
{
    NSLog(@"navigationController willShowViewController");
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top