O método popToRootViewController de UINavigationController não pode ser chamado por um delegado?

Eu tenho um UINavigationController que funciona muito bem. Cada controlador de exibição tem seu próprio botão que retorna a pilha à sua raiz, o que também funciona muito bem. No entanto, eu também gostaria de poder recuperar a pilha de volta à raiz pressionando um botão na barra de guias (que obviamente está em uma classe totalmente diferente fora da pilha de navegação).

Portanto, criei um representante na classe da barra de guias que localiza o controlador de exibição no topo da pilha e chama o método nesse controlador de exibição para retornar a pilha à raiz. Imprimi algo no console para verificar se o delegado está configurado corretamente e está. Tudo funciona exatamente como deveria, exceto que pressionar a barra de guias não faz a pilha voltar à sua raiz.

Pensamentos?

Este é o controlador de exibição na parte superior de uma pilha UINavigationController

class BlankViewController202: UIViewController, MainContainerViewControllerDelegate {

    // pop to root
    func popToRoot() {
        self.navigationController?.popToRootViewController(animated: true)
        print("success")
    }

}

Quando essa função acima é chamada de dentro do controlador de exibição (quando o usuário pressiona o botão no próprio controlador de exibição), ela abre a pilha. Mas quando esse mesmo método exato é chamado por um delegado na barra de guias, ele não abre a pilha (mas é impresso no console para que eu saiba que está conectado corretamente).

É aqui que o botão reside na barra de guias que, quando pressionada, deve colocar a pilha de volta à sua raiz.

protocol MainContainerViewControllerDelegate {
    func popToRoot()
}

class MainContainerViewController: UIViewController {

    func moveToTab3(sender: UIButton!) {
        // ...
        let banana = BlankViewController202()
        self.delegate = banana
        delegate?.popToRoot()
    }

}

questionAnswers(3)

yourAnswerToTheQuestion