ios - framework - xcode doc




Segue para outro storyboard? (4)

É possível seguir de um storyboard para outro ou incorporar um storyboard em um controlador de visualização em outro storyboard? Eu preciso colocar um UITabBarController em um UINavigationController e gostaria de mantê-los bons e separados.


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)
}

Do Xcode 7 em diante, você pode fazer isso graficamente usando uma referência do Storyboard:

Adicione a referência do storyboard ao seu storyboard. Criar segue entre ViewController e Storyboard Reference (ctrl + drag)

Em seguida, preencha estes campos.

Onde "Tutorial" é o arquivo "Tutorial.storyboard" e "MainTutorialController" é o seu campo "ID do storyboard" em ViewControllerSettings


Você não deve colocar UITabBarControllers em um UINavigationController. Ele está pedindo por erros como a rotação / visualização erradas incorreta etc., já que a Apple não suporta este tipo de contenção:

Ao combinar controladores de visualização, no entanto, a ordem de contenção é importante; apenas determinados arranjos são válidos. A ordem de contenção, de filho para pai, é a seguinte:

  • Controladores de visualizaçã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 visualização de navegação
  • Controlador de barra de guias
  • Controlador de visão dividida

Você não pode realmente fazer segues manualmente porque o UIStoryboardSegue é uma classe abstrata. Você precisa subclassificá-lo e implementá-lo para que ele faça qualquer coisa. Eles são realmente feitos para serem criados em storyboards. Você pode empurrar o controlador de visualização manualmente, 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 notar, porém, é que você disse que quer manter as coisas boas e separadas. A ideia dos storyboards é permitir que você mantenha as coisas separadas enquanto faz todo o seu trabalho de design em um só lugar. Cada controlador de visualização é agradável e separado dentro do storyboard dos outros. A ideia é manter tudo em um só lugar. Apenas mostre bem para que seja organizado, e você estará pronto para ir. Você não deve separar a menos que você tenha uma boa razão para fazê-lo.





uistoryboard