Quando abro um UIView personalizado de uma UITableViewController, como faço para fechar a exibição personalizada e voltar para a exibição de tabela?
-
06-07-2019 - |
Pergunta
Eu estou usando um UITableViewController
para um menu em um jogo. A exibição de tabela abre um controlador de uma visão para o meu UIView
personalizado que mostra o jogo. Quando o jogo termina o UIView
é notificado (que é kinda arruinar os princípios MVC) e de lá eu estou meio perdido.
Perguntas:
- Pode um
UIView
comunicar com seu controlador? Como? - Can um controlador de falar com aquele que começou? Como?
- Como fazer a transição I entre toda esta teia complicada de pontos de vista e os controladores graciosamente?
Solução
-
Use um protocolo de delegado aqui. Seu UIView jogo personalizado pode usar uma propriedade
delegate
e métodos de compra sobre este delegado, quando os eventos acontecem (jogo sobre, jogo pausado, vista fechada, etc). Aqui está um ótimo post sobre o uso de delegados: Como eu crio delegados em Objective- C? -
Eu recomendo usar um UINavigationController. Você não necessariamente precisa mostrar a barra de navegação, mas se você aninhar seus vista controladores em um controlador de navegação você tem acesso a
-pushViewControllerAnimated:
e-popViewControllerAnimated:
o que torna muito fácil para navegação entre os níveis de controladores de vista aninhadas. -
Outro benefício do UINavigationController -. Você vai ter uma agradável animação slide quando você alternar entre as vistas
Existem outros mecanismos 3rd party lá fora, que você pode preferir mais os mecanismos UIKit UINavigationController / UIViewController. Confira o projeto Three20 , em particular a classe TTNavigationCenter.