Como posso gerenciar meus ViewControllers no meu jogo?

5

Estou criando um jogo iOS muito simples que não requer nenhum OpenGL sofisticado; Eu gostaria de ficar com Core Graphics & Animação Básica. Eu gostaria de fazer disso um jogo de tela cheia, e minha pergunta é sobre o gerenciamento + hierarquia ViewController:

Parece que eu deveria ter dois tipos de ViewControllers: VCs básicos para navegar entre telas de menu (ex. Configurações, Menu Principal, Level Select, etc.) e VCs de Gameplay para gerenciar todas as minhas UIViews e CALayers.

Qual é uma boa maneira de gerenciar isso? É uma boa prática ter uma hierarquia de VCs como um aplicativo tradicional baseado em UINavigationController , cobrindo a NavBar quando estou exibindo um Game ViewController? Ou, em vez disso, devo remover todos os outros ViewControllers da pilha quando eu entrar no "modo de jogo" e defini-lo como minha propriedade window.rootViewController ? Quaisquer alternativas / desvantagens para redefinir continuamente window.rootViewController ?

Meu instinto me diz que o último é melhor em recursos + desempenho, mas o conselho + direção aqui seria apreciado.

    
por Chazbot 30.09.2011 / 21:15
fonte

1 resposta

3

Eu vi os dois feitos, mas eu prefiro o último para considerações de memória. antes de você mudar o rootViewController, você precisa desvanecer e remover o supervisor do anterior, então adicionar o novo e colocá-lo, e finalmente definir como root. isso vai bagunçar a orientação, a menos que você tenha apenas um VC na tela que herda do UIViewController.

Então, eu teria um VC principal para manipular todos os itens do menu e separar suas subvisões em classes que herdam NSObject (deve haver apenas uma classe na tela em um momento que herda do UIViewController - basta procurar no Google por recomendações da Apple para dividir uma única tela em arquivos / classes IB separados). Quando você entra no modo de jogo, liga para o delegado do seu aplicativo.

em seguida, o representante do seu aplicativo pode lidar com a mudança do modo de menu para o modo de jogo. ele desvanece o VC anterior, aloca / inits o jogo VC, desaparece e faz o removefromsuperview, etc no anterior VC.

você realmente só precisa de duas classes no nível superior que o delegado do aplicativo alterne: um menu VC (com subvisualizações) e um jogo VC (com subvisualizações).

    
por 02.10.2011 / 08:22
fonte