ios xcode cocoa-touch ios5 uistoryboard

ios - Segue a otro guión gráfico?



xcode cocoa-touch (6)

¿Es posible pasar de un guión gráfico a otro, o insertar un guión gráfico en un controlador de vista en otro guión gráfico? Necesito colocar un UITabBarController en un UINavigationController , y me gustaría mantenerlos agradables y separados.


¿Has probado lo siguiente?

2 / haga clic para seleccionar su controlador de vista que está vinculado a su controlador de navegación y en el menú superior: editor -> incrustar en -> Controlador de barra de pestañas

Nota: No lo probé porque estoy usando lo contrario: crear aplicaciones de barra con pestañas y colocar el controlador de navegación dentro).


Aquí hay una versión rápida:

let targetStoryboardName = "Main" let targetStoryboard = UIStoryboard(name: targetStoryboardName, bundle: nil) if let targetViewController = targetStoryboard.instantiateInitialViewController() { self.navigationController?.pushViewController(targetViewController, animated: true) }


Desde Xcode 7 en adelante, puedes hacer esto gráficamente usando una referencia del guión gráfico:

Agrega la referencia del guión gráfico a tu guión gráfico. Crear segue entre ViewController y Storyboard Reference (ctrl + drag)

Luego llena estos campos.

Donde "Tutorial" es el archivo "Tutorial.storyboard" y "MainTutorialController" es su campo "Storyboard ID" en ViewControllerSettings


No debe colocar UITabBarControllers en un UINavigationController. Está pidiendo errores tales como autorrotación incorrecta / descarga de vistas, etc., ya que Apple no admite este tipo de contención:

Sin embargo, cuando se combinan controladores de visualización, el orden de contención es importante; solo ciertos arreglos son válidos. El orden de contención, de niño a padre, es el siguiente:

  • Controladores de vista de contenido y controladores de vista de contenedor que tienen límites flexibles (como el controlador de vista de página)
  • Controlador de vista de navegación
  • Controlador de la barra
  • Controlador de vista dividida

Realmente no puedes hacer los cambios manualmente porque UIStoryboardSegue es una clase abstracta. Necesita subclasificarlo e implementarlo para que pueda hacer cualquier cosa. Realmente están destinados a ser creados en guiones gráficos. Sin embargo, puede pulsar el controlador de vista manualmente, que es una buena solución. La respuesta de lnafziger hace esto bien:

UIStoryboard *secondStoryBoard = [UIStoryboard storyboardWithName:@"secondStoryBoard" bundle:nil]; UIViewController *theTabBar = [secondStoryBoard instantiateViewControllerWithIdentifier:@"myTabBar"]; [self.navigationController pushViewController:theTabBar animated:YES];

Una cosa a tener en cuenta, sin embargo, es que has dicho que quieres mantener las cosas bien y separadas. La idea de guiones gráficos es permitirle mantener las cosas separadas mientras hace todo su trabajo de diseño en un solo lugar. Cada controlador de vista es agradable y está separado dentro del guión gráfico de los demás. La idea es mantener todo en un solo lugar. Solo extiéndelo bien para que esté organizado, y estarás listo para irte. No debes separarlo a menos que tengas una buena razón para hacerlo.


Sí, pero tienes que hacerlo programáticamente:

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