top of page
Foto do escritorPolicante

Ciclo de Vida da ViewController do UIKit

Atualizado: 15 de mar. de 2023



Você provavelmente já deve ter ouvido essa frase, seja em algum estudo seu ou até mesmo em entrevista que perguntam o que é isso.

A nossa resposta acaba sendo:

  • ViewDidLoad

  • ViewWillAppear

  • ViewDidAppear

  • ViewWillDisappear

  • ViewDidDisappear


Se você não sabia, agora já sabe :D

Mas afinal, o que esses caras significa? Vamos lá



ViewDidLoad


O importante de você saber sobre essa função, é que ela é chamada a primeira vez quando a sua tela é carregada. Então quando você faz a navegação de uma tela A para outra, antes da tela B ser exibida é executado essa função, logo depois de carregar na memória.


Nessa função já temos todos os nossos componentes visuais carregados em memória, dessa forma conseguimos manipular e alimentar com informações. Nela também é possível você adicionar as chamadas de API ou banco de dados local. Vale ressaltar que ela só executa uma única vez.


Por mais que nossos componentes visuais já estão prontos, nós ainda não temos exatamente definido qual a dimensão da tela ou dos componentes, então se você precisar realizar algum tipo de calculo de tamanho de tela, esse não é o momento certo.



 

ViewWillAppear

Diferente do anterior, essa função pode ser executada mais de uma vez. Como assim? Continue lendo que irei contar mais para baixo.

Essa função é chamada antes da nossa tela (entenda tela como a nossa View) aparecer, aqui você pode realizar chamadas de API também, quando você precisa mostrar informações para o usuário ou recarregar todo momento que a tela for apresentada.


Ainda não temos a informação exata de tamanho de tela, então não realize cálculos aqui.


 

ViewDidAppear

Aqui já temos uma função que é chamada logo após a exibição da tela que também pode ser executado mais de uma vez. Geralmente usamos essa função para iniciar os observadores ou Timer.

Aqui você tem a certeza que a tela foi exibida para o usuário, então pode disparar alguma rotina específica, tal como disparo de evento ou até mesmo algum alerta para o usuário.


 

ViewWillDisappear

Chamada no momento que a tela irá desaparecer da tela, uma ação que vai acontecer e nesse momento você deve parar as execuções que você mandou rodar no método ViewDidAppear


Você deve entender que quando digo "desaparecer", é literalmente quando o usuário não irá mais visualizar a tela, seja por navegação para outra tela ou simplesmente fechando a tela principal. Ponto muito importante, quando estamos minimizando o app, essa função não é chamada.


 

ViewDidDisappear

Para finalizar nosso ciclo, temos o não menos importante viewDidDisappear, chamada todo vez que a tela desapareceu. Não é muito utilizada no desenvolvimento por não ter muita utilidade, mas caso você esteja trabalhando com alguma persistência de dados local, você pode usar esse momento para salvar as informações.

 

Mas por que chamamos de ciclo? Se a tela só abre uma vez?

Ótima pergunta, ganhou uma estrelinha!


Por mais que geralmente temos a tela que é exibida somente a primeira vez, o ciclo sempre se repete, executando a sequencia que acabamos de aprender.


Vamos ver como funciona por baixo quando abrimos nosso aplicativo e carregamos a primeira tela?


Eu acho que você deveria dar um joinha só por essa arte abstrata

Exemplo da sequencia de chamada das funções do ciclo da viewcontroller

Como podemos observar na imagem, ao abrir nosso app e navegamos para primeira tela (TelaA), podemos observar que antes de realmente carregar as informações da tela, algumas funções são chamadas antes, tal como init, viewDidLoad e viewWillAppear, depois disso a nossa tela é de fato carregada e exibida para o usuário, logo depois é chamada a função viewDidAppear.


Essa sequência de chamada é feito pelo próprio sistema operacional, você não precisa fazer nada, seja usando Storyboard, XIB ou ViewCode.


Agora vamos ver o que acontece quando mandamos abrir uma tela nova.


Aqui teremos que ter um pouco mais de atenção. Temos duas telas, cada uma sendo representada por uma cor:

  • Vermelho para tela A

  • Azul para tela B

Quando realizamos a navegação para próxima tela, é iniciado a tela B e no meio do processo, a tela A inicia seu processo de desvincular. Mas esse processo de desvincular não quer dizer que a tela A está morrendo, ela só esta entrando em repouso e aguardando ser acionada novamente.


No fluxo da UINavigationController, caso você chame o popViewController a tela B será desinstanciada e consequentemente irá ser removida da memória, pelo fato de você estar solicitando a remoção da ViewController dela. Sendo assim, a tela A irá repetir o ciclo de apresentação da View, então repetimos o processo de passar pela viewWillAppear e viewDidAppear.


A viewDidLoad não é chamada pois lembre, ela só executa uma vez e por já termos a instância da ViewController ativa, ela não será recriada. Mas caso você faça uma navegação para frente, ou seja, você cria uma nova instância da Tela A, irá repetir todo o processo do primeiro passo.


Agora se a gente mandar apresentar como modal?

Você diz se a gente chamar o present ? Sim, isso mesmo!


Ai eu te retorno com uma pergunta, com a tela apresentada na frente, você ainda está vendo a tela de trás?

Espero que sua resposta seja sim, então nesse caso a Tela A não saiu do campo de visão do usuário, dessa forma ela não executa a rotina de disappear. Então quando a tela B fechar e voltar para tela A, não vai executar o processo de appear, pois a tela não saiu dali.


Então se consideramos que o usuário não está vendo a tela, vai chamar o processo de disappear, então se o usuário minimizar o aplicativo, quer dizer que vai rodar esse processo?

Não, pois quando você minimiza o aplicativo, você está jogando ele para segundo plano. Assim, é outro processo sendo executado e quando voltar o aplicativo, você está voltando para o primeiro plano. Sendo assim, não executando o processo de appear.


 

O importante de tudo isso que falei, é você saber quais funções são chamadas de forma automática baseado no ciclo de vida da ViewController e o que serve cada uma das funções. Não precisa decorar, com o tempo e muita prática você acaba acostumando e memorizando.


Eu sei, são muitas informações para absorver. Por isso indico você realizar a leitura novamente ou se quiser tem um vídeo que gravei faz um tempinho falando sobre esse tema.



Curtiu? Deixe seu feedback e ajude compartilhando nas suas redes




 


Quer melhorar sua página do Linkedin e aprender como participar de uma entrevista?

Venha conhecer a Vitrine RH!

Serão 3 dias de conteúdo onde vamos te ensinar como melhorar seu Linkedin e seu currículo, dicas de entrevista e como se comportar e no terceiro dia vamos realizar uma simulação de entrevista.



313 visualizações0 comentário

Posts recentes

Ver tudo

Comments


bottom of page