ios - Xcode 6 Bug: clase desconocida en el archivo Interface Builder



15 Answers

A veces, Xcode pierde customModule="AppName" customModuleProvider="target"

Para solucionarlo, abra el guión gráfico como código fuente y reemplace esta línea:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
sceneMemberID="viewController">

a esto:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
 customModule="AppName" customModuleProvider="target" sceneMemberID="viewController">
ios xcode xcode6 interface-builder uistoryboard

Actualicé a Xcode 6 beta 4 y ahora mi aplicación falla continuamente con el mensaje

Clase desconocida X en el archivo Interface Builder.

Se bloquea porque supuestamente Xcode no puede encontrar mis clases personalizadas que he vinculado en mi Storyboard pero muestra que están vinculadas correctamente en la interfaz de Xcode.

Estoy seguro de que todo está vinculado correctamente. Mi única otra opción es eliminar todo el archivo del guión gráfico y empezar de cero porque puede estar dañado de alguna manera.

Edición: También me gustaría agregar que intenté limpiar, reiniciar el simulador, jugar con las fases de compilación, etc. Nada de eso funciona.




Esto funcionó para mí ..

Verifique su fuente compilada, si ese archivo (por ejemplo, ViewController.m) está agregado o no, en mi caso, el archivo ViewController no fue agregado por lo que me estaba dando el error ...




Proyecto con múltiples objetivos

En mi caso, estoy trabajando en un proyecto con múltiples objetivos y el problema fue "heredar de un objetivo" no estaba marcado. Seleccionando "heredar de destino" resolví mi problema




Mi respuesta: establezca un módulo personalizado igual al nombre del Pod personalizado (en mi ejemplo, nombre de clase personalizado) como en la captura de pantalla adjunta

Esta solución es para un caso específico : para clases de vistas personalizadas desde el marco Pod (o Cartago ).

Infraestructura: XCode8, Swift3




Enfrenté este problema en Xcode 8 , para resolverlo tuve que modificar el guión gráfico en el editor de texto.

En general, busque su control y elimine customModule y customModuleProvider de la entidad de control.

Hizo un truco para mí.




Main.storyboard este problema en Xcode 6.1 cuando Main.storyboard , el archivo LaunchScreen.xib y las clases de ViewController predeterminadas de mi proyecto.

Lo arreglé eliminando las entradas del Info.plist de la Info.plist de Info.plist y Main Interface de Info.plist




Compruebe si su clase tiene derecho de membresía de destino .




Estos pasos me funcionan.

1) Borrar datos derivados.
2) Eliminar archivos .h y .m
3) Crear archivos .h y .m otra vez




Lo que dice @gfrs es correcto, debe configurar el módulo. Sin embargo, una vez me topé con un problema que mi clase no estaba en la lista desplegable de Class . Finalmente, eliminé el archivo swift, reinicié Xcode y volví a crear el archivo. Finalmente la clase fue listada y podría ser usada en el Storyboard.

También revise esta respuesta , que parece resolver el problema "real" que encontré.




Mi solución (Xcode 8.1 Swift 3.0):

Clase desconocida xxx en el archivo Interface Builder.

Abra StoryBoard como código fuente y busque xxx . Eliminar atributo que contiene valor xxx . Construir y ejecutar.




En mi caso, la clase a la que se hace referencia en el Guión gráfico / xib no tenía un conjunto de miembros de destino .

Para solucionarlo, .m archivos .h y .m esa clase la misma Membresía de destino que sus otras clases.




Mi solución fue eliminar @objc de la definición de la clase personalizada.




Lo que solo funcionó para mí es agregar el nombre del módulo al archivo xib ...

Así que, los archivos xib se ven así:

mymodule.MyViewController.xib (Module being the name of the proyect, usually)

Una solución HORRIBLE en mi opinión, pero supuestamente así es como Apple quiere que lo hagamos ahora.

Esta pregunta muestra 3 posibles alternativas de trabajo en la versión beta 4 ... al parecer, Apple no ha sido muy útil en esta situación, según algunos, porque lo llaman "Trabajar como se esperaba".




Tuve este problema después de agregar un nuevo objetivo, luego creé una nueva clase usando el cuadro de diálogo 'Nuevo archivo', pero accidentalmente no pude verificar el nuevo objetivo ni el objetivo original en el cuadro de diálogo de creación, por lo que el objeto solo se agregó a mi objetivo original. La solución fue eliminar los archivos de origen (eliminar solo la referencia) y luego volver a agregarlos usando 'Agregar archivos', esta vez verificando ambos objetivos.




Seleccione su archivo de clase desconocida, abra la pestaña del inspector de archivos, verifique su nombre de Target Membership en la Target Membership . Hay que ir




Related