perform for objective-c uiviewcontroller segue identifier uistoryboardsegue

objective-c - perform - prepare for segue swift 4



NSInvalidArgumentException-el receptor no tiene segue con el identificador (8)

¡Lo arreglé! 1. asegúrese de que el guión gráfico correcto esté seleccionado en Xcode (si cambia el nombre del guión gráfico, cámbielo en el resumen del proyecto). luego borra la aplicación en el simulador y reinicia

He estado probando todo por horas, y nada ha funcionado. Estoy tratando de seguar entre dos controladores de vista, desde un tableViewController a otro tableViewController. El segue está conectado a la vista de nivel superior, no a la vista de tabla. El identificador que se estableció en Xcode es idéntico al utilizado en el código (copiar y pegar). Anoche estaba funcionando bien, pero ahora parece que no puedo hacer que transcurra sin que se cuelgue.

aquí están los métodos en los que se llama el segue

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { self.photoList = [FlickrFetcher photosInPlace:[self.topPlacesList objectAtIndex:indexPath.row] maxResults:50]; NSLog(@"photolist %@", self.photoList); NSLog(@"here"); [self performSegueWithIdentifier:@"segue1" sender:self]; NSLog(@"here"); } -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if([segue.identifier isEqualToString:@"segue1"]) { PhotosTableViewController *photosTVC = segue.destinationViewController; photosTVC.photoList = self.photoList; } }

aquí está el informe de error

2012-08-08 15: 28: 39.093 Top Places [512: f803] * Aplicación de finalización debido a excepción no detectada ''NSInvalidArgumentException'', razón: ''Receptor (PlacesTableViewController: 0x6887ff0) no tiene segue con identificador'' segue1 '''' * Primera llamada de lanzamiento pila: (0x13c0052 0x1551d0a 0xde24b 0x3efd 0xa771d 0xa7952 0x92f86d 0x1394966 0x1394407 0x12f77c0 0x12f6db4 0x12f6ccb 0x12a9879 0x12a993e 0x17a9b 0x2778 0x26d5) finalizaron lanzando una excepción

aquí hay una captura de pantalla del guión gráfico http://s14.postimage.org/66wf13q4h/Screen_Shot_2012_08_08_at_3_22_10_PM.png


En Interface Builder debe establecer el identificador de segue para segue1 que es un segue conectado a su controlador de vista.


Intenté todo lo enumerado y no tuve suerte. Lo que funcionó fue crear una nueva transición a una nueva Vista, luego usar esa, ejecutarla, luego crear una transición a la vista anterior.


Pude solucionarlo ejecutando "limpiar" en el menú "Producto" en Xcode y restableciendo los contenidos y las configuraciones en el simulador.


Tenía este problema con un segue de desenrollar. Finalmente me di cuenta de que perdí mi identificador cuando reemplacé un controlador de vista en el guión gráfico. Lo volví a agregar haciendo clic en el segue de desenrollado en el contorno del documento (barra lateral del guión gráfico) y luego, en el inspector de atributos, agregué el identificador correspondiente.

Si nada más funciona, al momento del arrendamiento con respecto a desenrollar los segmentos, puede llamar

[self dismissViewControllerAnimated:YES completion:nil];


Tuve el mismo problema que hice un nuevo VC como subclase de otro controlador de vista. Debería ser la subclase de UIViewController o UITableViewController. Compruebe el archivo de encabezado si UIKIT se está importando o no.


Tuve el mismo problema y tuve problemas durante horas. La respuesta de Stackmonster resolvió mi problema (renombrar el guión gráfico), pero no entendí por qué resolvió el problema.

Descubrí que cuando cambiaba un elemento en el guión gráfico (agregaba una etiqueta o cambiaba el color de fondo) no se reflejaba en el simulador: no estaba usando el guión gráfico que podía ver en xcode, pero sí una versión anterior del guión gráfico. Tuve que cambiar el nombre del guión gráfico en el navegador del proyecto y también cambiarle el nombre en info.plist (en archivos compatibles) y apareció mi etiqueta, y el color de fondo aplicado, y la transición funcionó.

No sé por qué los cambios del guión gráfico no estaban teniendo efecto, pero me causó una gran cantidad de tiempo para encontrarlos. He visto en los blogs que muchos desarrolladores tienen el mismo problema.


Yo tuve el mísmo problema. En mi inicializador - (id)initWithCoder:(NSCoder *)aDecoder estaba haciendo self = [super init]; cuando debería haber hecho self = [super initWithCoder:aDecoder]; . Cuando arreglé esto, todo funcionó como se esperaba.