Carregando um controlador de exibição e hierarquia de exibição programaticamente em touch de cacau sem xib

StackOverflow https://stackoverflow.com/questions/809898

Pergunta

Parece que todos os modelos de toque de cacau são configurados para carregar uma ponta.

Se eu quiser iniciar um novo projeto que usará um controlador de exibição e carregue sua exibição (hierarquia) programaticamente, não de um NIB/XIB, quais são as etapas para configurá -lo ou ajustar um modelo.

Eu, embora tudo o que eu precisava fazer era implementar -loadview, mas tenho problemas toda vez que tento fazer isso.

Foi útil?

Solução

É razoavelmente simples fazer geração de interface do usuário completamente programática. Primeiro, você precisa editar main.m para se parecer com o seguinte:

int main(int argc, char *argv[]) 
{
    NSAutoreleasePool *pool = [NSAutoreleasePool new];  
    UIApplicationMain(argc, argv, nil, @"MyAppDelegate");
    [pool release];
    return 0;   
}

Onde o MyAppDelegate é o nome da sua classe de delegados de aplicativos. Isso significa que uma instância do MyAppDelegate será criada no lançamento, algo que normalmente é tratado pelo arquivo principal principal do aplicativo.

Dentro do MyAppDelegate, implemente seu ApplicationDidfinishlaunching: Método semelhante ao seguinte:

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{    
    window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    if (!window) 
    {
        [self release];
        return;
    }
    window.backgroundColor = [UIColor whiteColor];

    rootController = [[MyRootViewController alloc] init];

    [window addSubview:rootController.view];
    [window makeKeyAndVisible];
    [window layoutSubviews];    
}

Onde o MyrootViewController é o controlador de exibição para a visualização principal em sua janela. Isso deve inicializar a janela principal e adicionar a exibição gerenciada pelo MyrootViewController a ela. RootController é mantido como uma variável de instância dentro do delegado, para referência posterior.

Isso deve permitir que você gerar programaticamente sua interface de usuário através do MyrootViewController.

Outras dicas

Os próprios views não têm uma hierarquia, os uinavigationControllers têm. Então, inicie um desses e coloque um uiviewcontroller na pilha. Isso deve fazê -lo, da maneira mais básica possível, sem arquivos XIB. Você deve ser capaz de desenvolver isso.

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
   UINavigationController *navController = [[UINavigationController alloc] init];

   UIViewController *viewController = [[UIViewController alloc] init];

   // set the properties of viewController here, to make it look like you want

   [navController pushViewController:viewController animated:NO];

   [window addSubview:navController.view];

   // Don't forget memory management
   [navController release];
   [viewController release];

   [window makeKeyAndVisible];
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top