É possível seguir de um storyboard para outro ou incorporar um storyboard em um controlador de exibição em outro storyboard? Eu preciso colocar um UITabBarController
em um UINavigationController
e gostaria de mantê-los legais e separados.
É possível seguir de um storyboard para outro ou incorporar um storyboard em um controlador de exibição em outro storyboard? Eu preciso colocar um UITabBarController
em um UINavigationController
e gostaria de mantê-los legais e separados.
Respostas:
Sim, mas você deve fazer isso programaticamente:
// Get the storyboard named secondStoryBoard from the main bundle:
UIStoryboard *secondStoryBoard = [UIStoryboard storyboardWithName:@"secondStoryBoard" bundle:nil];
// Load the initial view controller from the storyboard.
// Set this by selecting 'Is Initial View Controller' on the appropriate view controller in the storyboard.
UIViewController *theInitialViewController = [secondStoryBoard instantiateInitialViewController];
//
// **OR**
//
// Load the view controller with the identifier string myTabBar
// Change UIViewController to the appropriate class
UIViewController *theTabBar = (UIViewController *)[secondStoryBoard instantiateViewControllerWithIdentifier:@"myTabBar"];
// Then push the new view controller in the usual way:
[self.navigationController pushViewController:theTabBar animated:YES];
A partir do Xcode 7, você pode fazer isso graficamente usando uma Referência do Storyboard:
Adicione Referência do Storyboard ao seu storyboard. Criar segue entre o ViewController e a referência do storyboard (ctrl + arraste)
Em seguida, preencha esses campos.
Onde "Tutorial" é o arquivo "Tutorial.storyboard" e "MainTutorialController" é o campo "ID do storyboard" em ViewControllerSettings
Você não pode realmente executar seguimentos manualmente porque UIStoryboardSegue é uma classe abstrata. Você precisa subclassificá-lo e implementá- perform
lo para que ele faça qualquer coisa. Eles realmente foram criados para serem criados em storyboards. Você pode enviar manualmente o controlador de exibição, o que é uma boa solução. A resposta de lnafziger faz isso bem:
UIStoryboard *secondStoryBoard = [UIStoryboard storyboardWithName:@"secondStoryBoard" bundle:nil];
UIViewController *theTabBar = [secondStoryBoard instantiateViewControllerWithIdentifier:@"myTabBar"];
[self.navigationController pushViewController:theTabBar animated:YES];
Uma coisa a observar, porém, é que você disse que deseja manter as coisas agradáveis e separadas. A idéia dos storyboards é permitir que você mantenha as coisas separadas enquanto realiza todo o seu trabalho de design em um só lugar. Cada controlador de exibição é agradável e separado no storyboard dos outros. A idéia é manter tudo em um só lugar. Apenas apresente-a de maneira organizada, e você estará pronto. Você não deve separá-lo, a menos que tenha realmente um bom motivo para fazê-lo.
Você não deve colocar UITabBarControllers em um UINavigationController. Ele está pedindo bugs, como autorotação incorreta / descarregamento de visualização etc., pois a Apple não suporta esse tipo de contenção:
Ao combinar controladores de vista, no entanto, a ordem de contenção é importante; apenas certas disposições são válidas. A ordem de contenção, de filho para pai, é a seguinte:
- Controladores de exibição de conteúdo e controladores de exibição de contêiner que possuem limites flexíveis (como o controlador de exibição de página)
- Controlador de exibição de navegação
- Controlador da barra de guias
- Controlador de exibição de divisão
Aqui está uma versão rápida:
let targetStoryboardName = "Main"
let targetStoryboard = UIStoryboard(name: targetStoryboardName, bundle: nil)
if let targetViewController = targetStoryboard.instantiateInitialViewController() {
self.navigationController?.pushViewController(targetViewController, animated: true)
}
você tentou o seguinte:
2 / clique para selecionar o seu controlador de exibição que está vinculado ao seu controlador de navegação e no menu superior: editor -> embutido -> controlador da barra de guias
Nota: Não testei porque estou usando o oposto: criando aplicativos com barras com guias e colocando o controlador de navegação dentro).