Carregando UINavigationController de outro nib automaticamente por UITabBarController

votos
4

Eu acho que eu encontrei a causa: Informações do documento janela do IB tem um aviso: 'Selected Navigation Controller (Segundo)' tem a propriedade nome nib definido como 'SecondView.nib', mas este controlador de vista não se destina a ter seu ponto de vista definir dessa maneira .

Vadio.


Eu construí nib no Interface Builder que tem UITabBarControllera nível superior e alterna entre UINavigationControllers.

Ele funciona muito bem quando tudo está em um único nibarquivo, mas eu gostaria de usar separadas nibarquivos para UINavigationControllers.

Começando com modelo TabBar da Apple, se eu mudar de classe de SecondView para UINavigationController, tudo acontece:

segunda

e tudo que eu vejo é o seguinte:

// imgur has lost the image, sorry //

É possível ter arquivo separado para UINavigationControllersem definir programaticamente tudo?

Eu gostaria TabBarControllerde lidar com a carga e descarga de nibs.

Publicado 19/05/2009 em 16:38
fonte usuário
Em outras línguas...                            


5 respostas

votos
5

Basta trocar o UINavigationController com o FirstViewController.

Assim, a hierarquia deve ser assim:

Tab bar controller
-----Tab bar
-----Navigation Controller
----------First View Controller
---------------Navigation Item
----------Tab bar item (First)
-----Navigation Controller
----------Second View Controller
---------------Navigation Item
----------Tab bar item (Second)

Você define a ponta de Primeira View Controller no Inspetor para o arquivo nib contendo os objetos de exibição reais (Desde que você está tentando dividi-los em arquivos separados, o que é uma coisa boa).

Você tem uma aba, que guia tem um controlador de navegação que carrega Primeira View Controller como sua exibição de raiz.

Feito.

Respondeu 19/05/2009 em 22:12
fonte usuário

votos
5

Eu não tentei configurar UINavigationController via IB. I têm várias telas, cada um é armazenada em separado xib e há uma classe correspondente que se estende UIViewController. Em applicationDidFinishLaunching I inicializar UIViewControllers usando xib de mas depois criar manualmente UINavigationController, adicione a visão de controlador de navegação para a janela e empurre primeiro fim de controlador de navegação.

Não estou certo se isso ajuda.

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    navigationController = [[UINavigationController alloc] init];

    FirstViewController * viewController = [[FirstViewController alloc] 
                                           initWithNibName:@"FirstView"
                                                    bundle:nil];
    [navigationController pushViewController:viewController animated:NO];
    [viewController release];
    [window addSubview:navigationController.view];
    [window makeKeyAndVisible];
}

Acima FirstViewController estende UIViewController, em IB você criar sua visão, em seguida, definir a classe proprietário do arquivo para sua classe (por exemplo, aqui FirstViewController) e conecte vista o dono do arquivo para a visão do UIView.

Respondeu 19/05/2009 em 16:49
fonte usuário

votos
1

Em primeiro lugar, parece que você tem seus UITabBarItems sob os controladores de navegação em vez de diretamente sob a UITabBarController. Isso pode ser parte do seu problema.

Em segundo lugar, quando você adiciona um UITabBarControllerem IB e e clicar em seu ícone na sua lista de objetos de nível superior (sua primeira imagem), o inspetor atributos lhe permitirá mudar o tipo de controlador de exibição para cada uma das abas. Usando isso, você pode mudá-los todos para controladores de navegação, se desejar. Além disso, desde que você queria carregar vistas personalizadas e visualizar controladores de outros nibs, se você olhar para a seção "View Controller" na parte inferior do inspetor de atributos, você pode selecionar uma ponta do seu projeto para carregar a vista. Assumindo que o nib "Proprietário do Arquivo" está definido para sua UINavigationControllersubclasse, tudo deve funcionar bem.

Tudo isso sem uma grande quantidade de codificação de trabalho, também. Deixe-me saber se você gostaria screenshots para o que eu estou falando no caso de você não pode encontrar esses painéis.

Respondeu 19/05/2009 em 17:04
fonte usuário

votos
1

Eu acredito que você está procurando algo como isto. Você iria substituir "qualquer" com o nome de vocês segundo arquivo nib.

newNavController = [[UINavigationController alloc] initWithNibName:@"whatever" bundle:[NSBundle mainBundle]];
Respondeu 19/05/2009 em 16:48
fonte usuário

votos
0

Eu encontrei os mesmos warning.I ter mantido todos controlador de exibição em arquivos xib separadas. Eu me livrei off-lo removendo .nib nome e mantê-la vazia.

Respondeu 24/12/2010 em 15:51
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more