Carregando UINavigationController de outro nib automaticamente por UITabBarController

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

  •  22-08-2019
  •  | 
  •  

Pergunta

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

Bummer.


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

Ele funciona muito bem quando tudo está em um único arquivo nib, mas eu gostaria de usar arquivos nib separados para UINavigationControllers.

A partir do modelo TabBar da Apple, se eu mudar de classe de SecondView para UINavigationController, tudo acontece:

segunda nib

e tudo que eu vejo é o seguinte:

// imgur has lost the image, sorry //

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

Gostaria TabBarController a carga do punho e descarga de nibs.

Foi útil?

Solução

Simplesmente 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 cargas Primeiro Ver controlador como seu ponto de vista raiz.

Feito.

Outras dicas

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 tenho certeza 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, então classe proprietária conjunto de arquivo para sua classe (por exemplo, aqui FirstViewController) e conecte vista o dono do arquivo para a visão do UIView.

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]];

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

Em segundo lugar, quando você adiciona um UITabBarController em IB e e clicar em seu ícone na sua lista de objetos de nível superior (sua primeira imagem), os atributos inspetor 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 subclasse UINavigationController, que devem trabalhar 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.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top