ios interface-builder xcode6 custom-controls ibdesignable

ios - Interface Builder-Error al cargar los designables desde la ruta(nulo)



interface-builder xcode6 (12)

Tengo algunos controles personalizados que he creado y los estoy usando en un nuevo proyecto. Sin embargo, sigo recibiendo errores en el generador de interfaces:

Failed to update auto layout status: Failed to load designables from path (null)

o

Failed to render instance of <control>: Failed to load designables from path (null)

He probado los controles en otro proyecto y parecen funcionar correctamente en el generador de interfaces, pero no puedo hacer que funcionen en el proyecto actual. ¿Qué causa este error y cómo puedo solucionarlo?

Gracias por adelantado...


Editar**

Abra Xcode (pero no abra su proyecto) y haga clic en Ventana (segundo desde la derecha)

Haga clic en Organizador y asegúrese de estar en Proyectos, luego elimine todos los datos derivados. Cierre Xcode y luego vuelva a abrir su proyecto y deje que Xcode vuelva a indexar sus archivos y vea si eso aclara el problema


El problema era que IB_DESIGNABLE de los cocoapods no están vinculados correctamente cuando el generador de interfaces procesa sus vistas.

El use_frameworks! El truco debería hacerlo, pero para mí fue un esfuerzo demasiado grande migrar el código.

Mi truco fue subclasificar cada vista IB_DESIGNABLE que utilicé en el guión gráfico que vino directamente de los pods. Resuelto los errores.


Este error apareció cuando actualicé los pods mientras el xcode y mi proyecto estaban abiertos.

Apagué el xcode. ejecutó la actualización de pod nuevamente. reinició xcode.

El error no volvió a aparecer.



Estoy ejecutando Xcode 7.3, y obtuve el error de desaparecer mágicamente siguiendo estos pasos que, al final, dejaron mi proyecto en el estado exacto en el que estaba antes de seguir estos pasos (es decir, un cambio neto cero a cualquier cosa):

  1. Agregue ''use_frameworks!'' (sin los apóstrofes, por supuesto) a su podfile
  2. Abre una ventana de terminal
  3. cd al directorio raíz de tu proyecto
  4. Ejecute ''pod install'' desde la línea de comando
  5. Elimine el ''use_frameworks!'' de tu podfile
  6. Ejecute ''pod install'' nuevamente
  7. Intente construir nuevamente y vea si eso corrige el error; lo hizo por mi

Parece uno de esos inconvenientes ocasionales de Xcode que todos hemos visto antes, especialmente cuando tienes prisa por hacer algo más.


Hay un truco muy útil que puedes hacer para depurar la representación en vivo.

1) Agregue esta extensión a su proyecto:

extension UIView { public func liveDebugLog(message: String) { #if !(TARGET_OS_IPHONE) let logPath = "/tmp/XcodeLiveRendering.log" if !NSFileManager.defaultManager().fileExistsAtPath(logPath) { NSFileManager.defaultManager().createFileAtPath(logPath, contents: NSData(), attributes: nil) } var fileHandle = NSFileHandle(forWritingAtPath: logPath) fileHandle.seekToEndOfFile() let date = NSDate() let bundle = NSBundle(forClass: self.dynamicType) let application: AnyObject = bundle.objectForInfoDictionaryKey("CFBundleName") let data = "/(date) /(application) /(message)/n".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) fileHandle.writeData(data) #endif } }

2) Agregue un liveDebugLog(message:) y coloque lo que quiera saber. 3) Abra Terminal.app y ejecute el comando open /tmp/XcodeLiveRendering.log

¡Hecho!

Créditos para Morten Bøgh


He resuelto ese problema actualizando el pod "pod update", espero que funcione para usted.


No estaba usando vainas de cacao, pero obtengo este error en un controlador de vista que extiende las clases importadas. Solo recibí este error al cambiar el StoryBoard a la vista de IphoneX, funcionaba bien en la vista del iPhone 8.

Cambié la configuración del proyecto de Nuevo sistema de compilación (Vista previa) a Sistema de compilación estándar, luego limpié el proyecto y el error desapareció.

No tengo idea de por qué, pero eso resolvió el problema para mí.


No estoy seguro de si esto resuelve su problema, ya que no puedo reproducirlo. Pero pensé que podrías intentarlo de todos modos.

Primero, como otros mencionaron, parece que CocoaPods tuvo el mismo problema. Revisé las confirmaciones que componían sus correcciones, pero sin ningún resultado relacionado con su configuración.

Sin embargo, encontré un mensaje de error relacionado diferente en esta pregunta de , que también estaba relacionado con algo que IB no encontró en la ruta. Me preguntaba si su solución podría ayudarte:

La solución fue agregar $(CONFIGURATION_BUILD_DIR) en el campo Runpath Search Paths Build settings del objetivo.


No uso CocoaPods, pero sí uso un marco interno que contiene elementos IBDesignable, y también estaba experimentando este problema. Limpié, eliminé los datos derivados de mi proyecto principal y reinicié Xcode, pero eso no pareció solucionarlo. Para resolverlo, tuve que ir a Ventana> Proyectos, seleccionar el proyecto de marco (no el proyecto que usó el marco, sino el proyecto de marco en sí) y eliminar los Datos Derivados. Entonces, pasos completos:

  1. Menú de productos> Limpiar
  2. Mantenga presionada Opción> Menú del producto> Limpiar carpeta de compilación ...> Limpiar
  3. Menú de ventana> Proyectos> Elegir mi proyecto de marco> Eliminar datos derivados
  4. Menú de ventana> Proyectos> Elegir mi proyecto principal> Eliminar datos derivados
  5. Salir de Xcode
  6. Reiniciar Xcode

Repita el paso 3 para todos y cada uno de los proyectos de framework que tengan IBDesignables y puedan estar causando los errores.


Tuve el mismo problema en el proyecto que no es de CocoaPods con vistas personalizadas de IBDesignable . Aparentemente, es un error de Xcode. Los pasos en esta respuesta me ayudaron a resolver el problema. En breve:

  1. Salga de Xcode.
  2. Elimine todos los procesos llamados Interface Builder Cocoa Touch Tool en su máquina.
  3. Inicie Xcode nuevamente.

Tuve el mismo problema. Yo uso cocoapods y hay una cápsula que usa designables. Así que el truco fue agregar ''use_frameworks!'' al Podfile. haga una ''actualización de pod'', vuelva a abrir el proyecto xcode y el mensaje de error no debería aparecer.