example bar iphone ios uinavigationcontroller segue

iphone - bar - root view controller navigation controller



NSGenericException '', razón:'' Los segmentos de inserción solo se pueden usar cuando el controlador fuente está administrado por una instancia de UINavigationController (11)

así que estoy haciendo una aplicación con 5 controladores de visualización, la primera está integrada en un UINavigationController y la transición entre los primeros 4 controladores de vista funciona bien. Sin embargo, la introducción de un 5 ° controlador de vista ha roto esto, y estoy obteniendo el error

Terminating app due to uncaught exception ''NSGenericException'', reason: ''Push segues can only be used when the source controller is managed by an instance of UINavigationController.''

No he hecho nada diferente con este 5º controlador de vista, es solo un ViewController estándar con una vista de imagen y una etiqueta, y todos mis segmentos son llamados por los botones de arrastrar ctrl en el guión gráfico. ¿Alguien tiene alguna idea de lo que está causando esto?

Gracias


Configure UINavigationcontroller como controlador de vista inicial (escena inicial) en StoryBoard.


En mi caso, en el momento en que el VC original realizó la transición, el Controlador de navegación estaba en transición y ya cambió el VC visible.

Lo resolví haciendo:

if (self.navigationController.visibleViewController == self) { [self performSegueWithIdentifier:@"thankyou" sender:self]; }

no más accidente. :)


Esto es muy probable porque su inserción se realiza desde el botón o lo que esté apuntando a un controlador de vista, no desde el controlador de vista de navegación que su controlador de vista hereda. Entonces, debe apuntar la transición al controlador de navegación.

Espero que esto ayude.


He enfrentado el mismo problema después de unos minutos que pude resolverlo.

He eliminado las conexiones de segue y he vuelto a establecer conexiones desde una vista a otras vistas. El problema está resuelto. lo que pasa es que eliminé las vistas y realicé algunos cambios en las vistas en la escena de la historia. Y lo importante es que debe verificar que las conexiones funcionen correctamente desde una vista a otra.

Esto puede ser útil para alguien, espero ...


Me he enfrentado al mismo problema y busqué mucho, pero nada podría ayudarme. Lo intenté de muchas maneras. Finalmente encontré la solución. Estoy haciendo un proyecto en xcode 5 y desarrollé vistas usando storyboard. Tengo 3 pantallas y mis conexiones son ..

view1 to view2 -> push

view2 to view3 -> push

view2 to view1 -> modal (este es mi error, necesitamos usar solo push)

esto funciona bien, pero he colocado el elemento del botón de barra (Atrás) en la vista 2 y la conexión segue era modal. cuando hago clic en el botón de la barra de vista2, se lo redirige a view1 correctamente, pero cuando intento pasar de view1 a view2 obtengo el mismo error. Porque si le da un tipo de segue de inserción desde la vista de origen a la vista de destino, debe usar la misma transición de inserción desde la vista de destino a la vista de origen.

Espero que sea útil para alguien ... gracias


Si su aplicación tiene un controlador de navegación como controlador de vista raíz de la ventana, seleccione el archivo del guión gráfico y luego seleccione el controlador de navegación correspondiente, en la casilla de verificación Medidas simuladas, seleccione el controlador de vista inicial. Esto funcionó para mí. Espero que esto ayude.


Solo necesita insertar un Controlador de navegación en su Controlador de vista de origen (la única vista inicial, no la vista que está presionando). Esto se puede hacer seleccionando el Controlador de vista de origen y Ir a Editor -> Insertar en -> Controlador de navegación.

Si cree que la barra de navegación que ha hecho el controlador de navegación. Simplemente seleccione el Controlador de navegación, en el "Mostrar el inspector de atributos" desactive la barra de navegación de programas.


Tuve el mismo problema que tuviste.

Mi problema era que estaba llamando al identificador de un cambio que no era accesible desde dentro de la clase a la que llamaba segue. Lo resolví agregando otro segue directamente a la vista desde ViewController que tenía acceso a la clase en la que estaba trabajando. Espero que esto ayude.


en mi caso particular, el lugar al que llamar en un subconjunto de vistas que requería un impulso era solo del código y no se podía conectar a través de IB. El proyecto original para crear el subconjunto de vistas se inició con un botón dedicado y así IB''able.

No se pudo configurar ningún segue y, por lo tanto, cualquier inserción dio como resultado este error.

Mi solución fue simple: [self showViewController: targetViewController sender: self];


si está utilizando la clase UIViewController

luego marque una cosa en la declaración de identificador de segue por ejemplo, usted ha establecido

Identificador: MySegue1 Segue: Presente Modally (elija esto si está utilizando UIViewController Class)

Presentación: Transición predeterminada: Predeterminado

y verifique una cosa más que la desaceleración de su objeto sea correcta

Tal vez mi respuesta no es exactamente correcta, pero esto es lo único que sé al respecto de este error. Espero que te ayude un poco.


agregue el Controlador de navegación a su vista inicial

  1. Seleccione la vista inicial
  2. Ir a Editor -> Insertar en -> Controlador de navegación.