ios - apple - STORYBOARD-no contiene un controlador de vista con identificador
storyboard apple (16)
¡Fijo! No solo debe establecerse el identificador en el segue, en mi caso DrivingDetails, sino también el identificador en mi tableViewController debe configurarse como DrivingDetails ... verifique mi imagen:
También eliminé el controlador de vista de navegación por lo que ahora los 2 controladores de vista de tabla están conectados directamente con una animación "push".
***** EDITAR para XCODE 7.0 *****
debe configurar el storyboardId (en este caso, viewController está incrustado en un controlador de navegación:
let lastMinVc = mainStoryBoard.instantiateViewControllerWithIdentifier("lastMinuteNavController") as! UINavigationController
Sigo recibiendo el siguiente error:
Storyboard (<UIStoryboard: 0x7ebdd20>) doesn''t contain a view controller
with identifier ''drivingDetails''
Este es el código:
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"drivingDetails"];
controller.title = [[dao libraryItemAtIndex:indexPath.row] valueForKey:@"name"];
[self.navigationController pushViewController:controller animated:YES];
}
Ya configuré el identifier
en el UIStoryboard
pero sigo recibiendo este error.
A algunos de mis controladores de vista les faltaba el atributo storyboardIdentifier .
Antes de:
<viewController
id="pka-il-u5E"
customClass="YourViewControllerName"
customModule="ModuleName"
customModuleProvider="target"
sceneMemberID="viewController">
Después:
<viewController
storyboardIdentifier="YourViewControllerName" <----
id="pka-il-u5E"
customClass="YourViewControllerName"
customModule="ModuleName"
customModuleProvider="target"
sceneMemberID="viewController">
A veces hay una confusión entre los términos.
// Swift 4
let storyboard = UIStoryboard(name: "StoryboardFileName", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "StoryboardID")
self.present(controller, animated: true, completion: nil)
Tenga en cuenta que "StoryboardFileName"
es el nombre de archivo del guión gráfico y no el ID aquí, donde "StoryboardID"
es en realidad el ID que ha configurado manualmente en el inspector de identidad. A veces las personas están confundidas acerca de la diferencia entre los dos, donde creen que el primero es en realidad el StoryboardID y el segundo un nombre de clase de ViewController.
He visto algo de confusión al respecto, así que pensé en publicar en esta pregunta que atrae a muchos programadores nuevos en Swift con un problema similar.
Acabo de tener este problema después de agregar un nuevo VC al guión gráfico, pero solo en el dispositivo, no en el simulador. Resulta que fue debido a tener múltiples localizaciones de guiones gráficos: el VC solo se agregó al primario. Traté de eliminar las otras localizaciones (una de ellas es la que usa mi iPhone) pero todavía tenía el error. Al final tuve que recrear las otras localizaciones con el nuevo VC en cada una de ellas.
El compilador muestra el siguiente error:
Terminating app due to uncaught exception ''NSInvalidArgumentException'',
reason: ''Storyboard (<UIStoryboard: 0x7fedf2d5c9a0>) doesn''t contain a
ViewController with identifier ''SBAddEmployeeVC''''
Aquí el objeto del guión gráfico creado no es el guión gráfico principal que contiene nuestros ViewControllers. Como archivo de guión gráfico en el que trabajamos se nombra como Main.storyboard . Entonces necesitamos tener referencia del objeto del Main.storyboard .
Use el siguiente código para eso:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
Aquí storyboardWithName
es el nombre del archivo del guión gráfico con el que estamos trabajando y bundle
especifica el paquete en el que se encuentra nuestro guión gráfico (es decir, mainBundle
).
En XCODE 7 | 8 | 9 ,
cuando cambias los ID del guión gráfico y obtienes errores como este,
simplemente LIMPIE su proyecto ( CMD + SHIFT + K )
Intenté todas las soluciones anteriores y ninguna funcionó.
Lo que hice fue:
- Proyecto limpio
- Eliminar datos derivados
- Reiniciar Xcode
- Vuelva a ingresar el StoryboardID que se muestra en las respuestas anteriores (dentro de IB).
Y luego funcionó. Lo sorprendente fue que ingresé la ID de Storyboar en el generador de interfaz y se eliminó / eliminó después de abrir Xcode nuevamente.
Espero que esto ayude a alguien.
La identidad se encuentra en la pestaña Inspector de identidad denominada ID del guion gráfico para Xcode 6.3.2 y se ha marcado Usar la opción ID del guion gráfico.
La modificación de "ID del guión gráfico" en el inspector de identidad (el tercer ícono a la izquierda) debería funcionar.
Si no es así y está seguro de que no hay errores tipográficos, intente limpiar el proyecto ("Producto" -> "Limpiar", o simplemente comando + shift + K).
Lo encontré ... haga clic en el controlador de vista en el guión gráfico, haga clic en el tercer ícono de la izquierda en los inspectores de atributos de vc, donde estableció el nombre de la llamada en esa pantalla dice ''identidad'': el mío estaba oculto, tuve que haga clic en la palabra identidad, entonces muestra storyboardID - agregue el identificador del código, hecho
Mientras ingresa el identificador u no ha seleccionado el controlador de vista adecuado, simplemente marque una vez si se repite, repita el procedimiento una vez más.
Obtuve el mismo error y pude solucionarlo cambiando los siguientes cambios en mi proyecto. He mencionado mi nombre de clase en el panel de inspectores, entonces el problema está resuelto. Ir a> panel derecho allí Identity Inspector En la sección de clase personalizada
clase: su nombre de clase (ViewController)
En la ID del guión gráfico de la sección de Identidad: su ID del guión gráfico (verController Name)
Después de esto, haga clic en Usar la opción de ID del guion gráfico. El problema ha terminado. Espero que te ayude....
Para aquellos con el mismo problema que @Ravi Bhanushali, aquí hay una solución Swift 4:
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
Solo para futuras referencias:
Estoy desarrollando en iOS 6 usando Storyboards.
Estaba teniendo el mismo problema, pero no pude encontrar el campo "Identificador" en el inspector. En su lugar, simplemente configure el campo denominado "ID del guión gráfico" con el nombre que le daría al identificador. Este campo se puede encontrar en la pestaña "Mostrar el inspector de identidad" en el inspector.
[Nota: los comentarios a continuación indican que algunas personas han descubierto que necesitan (¿también?) Establecer el campo "ID de restauración" justo debajo del ID del guión gráfico en el inspector. Hacer clic en "Usar ID del Storyboard" no parece ser suficiente.]
Hay una imagen a continuación para referencia: (en este caso he nombrado mi identificador igual que mi clase)
Use su identificador (@ "drivingDetails") como ID Storyboard.
es muy simple, seleccione el controlador de vista respectivo en el tablero de historia principal y revise el storyboardID si es que lo usa en el identificador de dar un nombre y usarlo.
aquí mi primera persona es storyboardID let vc = self.storyboard? .instantiateViewController (withIdentifier: "firstone") como! tabBarViewController