iOS como detectar programaticamente quando o controlador de vista superior é exibido?

Suponha que eu tenha uma pilha de controladores de nav com 2 controladores de visualização: o VC2 está no topo e o VC1 está por baixo. Existe código que posso incluir no VC1 que detectará que o VC2 acabou de ser retirado da pilha?

Desde que eu estou tentando detectar o popping de VC2 de dentro do código para VC1 parece que algo comoviewWillAppear ouviewDidAppear não funcionará, porque esses métodos são acionados toda vez que o VC1 é exibido, incluindo quando ele é empurrado pela primeira vez na pilha.

EDITAR: parece que não fui muito claro com a minha pergunta original. Aqui está o que eu estou tentando fazer: determinar quando o VC1 está sendo mostrado devido ao VC2 ter sido retirado do topo da pilha. Aqui está o que eu não estou tentando fazer: determinar quando VC1 está sendo mostrado devido a ser empurrado para o topo da pilha. Eu preciso de alguma maneira que detecte a primeira ação, mas NÃO a segunda ação.

Nota: Eu não me importo particularmente com o VC2, pode ser qualquer número de outros VCs que saem da pilha, o que me interessa é quando o VC1 se torna o topo da pilha novamente devido a algum outro VC começar a sair do topo.