ios - for - xcode tutorial
Xcode 4: Creando un xib de UIView, que no se conecta correctamente (30)
Intento crear una punta que contenga una vista que se integrará en una TableViewCell. ResultCell.h
la interfaz y los archivos de implementación, ResultCell.h
y ResultCell.m
. Son acciones, listas para usar, sin cambios de código.
Luego creo un archivo XIB vacío y arrastro una UIView sobre él. Luego hago clic en Propietario de archivo y establezco el tipo en ResultCell
. Hago clic en la vista y configuro su clase para que también sea ResultCell
.
Aquí están los problemas que tengo:
- Cuando uso la vista del Editor asistente (en la que vivo), el archivo
ResultCell.h
no aparece cuando estoy viendo el archivo ResultCell.xib. Tengo que forzarlo a cargar haciendo clic en Automático y seleccionando el archivo. - Cuando dejo caer una etiqueta en la vista, y luego Ctrl + clic y arrastro al .h para crear una salida, aparece este mensaje de error: " No se pudo insertar una nueva conexión de salida: no se pudo encontrar ninguna información sobre la clase llamada ResultCell. "
Intenté crear y volver a crear la vista, y simplemente no funciona, y comencé a perder la paciencia. Cualquier ayuda sería muy, muy apreciada!
- ResultCell debe ser una subclase de
UITableViewCell
- No debe arrastrar una
UIView
en el lienzo vacío, debe arrastrar unaUITableViewCell
- Debes seleccionar la celda y cambiarla para que sea tu subclase
- El propietario suele ser un controlador con una salida a la celda
Cada vez que quiera cargar una nueva celda, llame a:
[[NSBundle mainBundle] loadNibNamed:nibName
owner:controllerWithOutletToCell
options:nil]
después de la carga, use la celda y configure el ivar / outlet en nil, listo para la siguiente carga
hay otras formas, pero esto es común
Acabo de tener este problema y reiniciar Xcode no lo solucionó. Quité los archivos de clase del proyecto y luego los agregué de nuevo y comenzó a funcionar.
En XCode 7.1, funcionó agregar el conector en un punto diferente en mi archivo fuente. El error me refería a una de mis variables como si fuera una clase (no tenía ningún sentido). El error se detuvo cuando agregué el conector debajo de esa variable en lugar de arriba.
En mi caso, ayudó a hacer un "cambio falso" (solo un espacio) en el archivo de encabezado correspondiente.
Encontré el mismo problema hoy. Al reiniciar XCode no solucioné el problema. Pude hacer que las cosas volvieran a la normalidad mediante la opción "Eliminar" de "Datos derivados" del proyecto que se puede encontrar en Organizador . El organizador dice que, "Datos derivados incluye índice, resultados de compilación y registros". Supongo que el índice o la salida de compilación estaban causando este problema.
Entré en un estado similar solo hoy. Fue muy extraño: podría adjuntar cualquier XIB (nuevo o existente) a cualquier clase ViewController ya existente en el proyecto, pero no pude crear un nuevo ViewController y hacer que se adjunte correctamente a cualquier XIB. La funcionalidad "asistente" no funcionó, ni tampoco la funcionalidad de conexión IB-to-headerfile.
El cierre del proyecto y la reapertura no lo arreglaron.
Salir de XCode y reiniciar no lo solucionó.
Crear un nuevo proyecto y probar la funcionalidad funcionó bien, lo que me llevó a creer que había algo corrupto en algún caché en alguna parte.
Mi solución
- Cierra tu proyecto
- Vaya a la carpeta ~ / Library / Developer / XCode / DerivedData y ELIMINE todas las subcarpetas que allí hacen referencia al proyecto en el que está trabajando.
- Abra su proyecto en XCode. El problema debería arreglarse ahora.
Por cierto, simplemente ejecutar una limpieza completa no parece aclarar las cosas. Tuve que destruir los datos derivados. Estoy seguro de que entré en esta posición debido a los juegos de git que estaba jugando, pero no tenía idea de cómo salir, porque ni siquiera volver a las revisiones de git anteriores me ayudó. (Esa fue una gran pista también de que fue algo no rastreado por el proyecto en sí).
Espero que esto ayude a alguien por ahí.
Solo tuve que eliminar la carpeta de datos derivados. Debe hacer clic en Ventana -> Organizador -> Proyectos -> Eliminar datos derivados
Y REINICIAR XCODE.
¡Usted debe ser bueno para ir!
Este podría ser un tema antiguo, pero por si acaso alguien tiene el mismo problema en el futuro, intente eliminar los archivos .xib, .h y .m asociados y cree otros nuevos. Para mí, el UIViewController en mi archivo .h no era violeta e incluso retroceder y escribirlo no me ayudó.
Este problema parece ser un error de Xcode que aumenta cuando reemplazas un archivo con un nuevo archivo del mismo nombre. Xcode parece mantener una referencia del archivo anterior del mismo nombre.
De todos modos, la forma de solucionar esto parece ser:
- Limpia el proyecto
- Haga clic en (su proyecto) en la vista del Navegador del proyecto. Vaya a Compilar fuentes en Crear fases del objetivo para el que está compilando. Elimine y vuelva a agregar el archivo .m que le está causando problemas.
- Alternativamente, en el Inspector de archivos (vista Utilidades) del archivo NIB, en Membresía objetivo, desmarque y vuelva a marcar el nombre del objetivo.
- Reinicie Xcode para una buena medida.
- Por supuesto, eliminar y volver a agregar el archivo .m también debería solucionarlo.
(Los pasos 1 y 2 solo lo arreglaron por mí).
Esto me ayudó:
- desde el panel de archivos del proyecto (lado izquierdo) seleccione el archivo xib que está roto.
- Haga clic en el icono de Propietario de archivos desde la vista del editor.
- del panel de propiedades (lado derecho) seleccione la tercera pestaña (en la parte superior)
- especifique la "Clase personalizada"
Si no ve un "panel", eche un vistazo a la esquina superior derecha de la ventana y habilite los botones adecuados de "vista". Si no ve los botones "ver", haga clic en el botón de la cápsula que está más arriba a la derecha.
He tenido este problema y he encontrado una solución que no figura en la lista anterior.
En mi caso, pude ver que había algo mal en el archivo .h de clase porque mi controlador de vista personalizado no reconocía la clase: UIViewController (estaba en negro, no morado). Todos los demás controladores de vista personalizados tenían el: UIViewController en morado.
en mi caso, y posiblemente el tuyo, necesitaba agregar la clase a targets / build phases / compilar Fuentes desplegables. El .m necesita ser agregado. Todos los otros .m estaban allí pero no este.
Una vez que lo agregué, el: UIViewController apareció en color morado y todo funcionó bien.
La nueva clase que no forma parte del "OBJETIVO" es probablemente la causa raíz de esto, como se alude en algunas de estas respuestas.
Al crear una nueva clase de cacao, de manera predeterminada, la opción de agregar nueva clase al objetivo está marcada por defecto, pero, si por algún motivo no se verifica al presionar Guardar, tendrá este problema.
Cualquiera de estas soluciones provisionales que agreguen la nueva clase al objetivo de aplicaciones funcionará para resolver el problema, y es algo que todas estas "correcciones" tienen en común.
Creo que es probable que XCode tenga algunos errores que provocan que un archivo nuevo, por defecto, NO se agregue al objetivo principal de la aplicación. La solución se reduce a agregar tu clase "rota" al OBJETIVO principal
Ninguna de las soluciones anteriores resolvió el problema del conector por mí, así que archivé mi proyecto favorito hasta que encontré el siguiente subproceso de :
https://.com/a/15873770/2846800
Había estado trabajando en un proyecto grande en una versión anterior de XCode y había desactivado la indexación. Al volver a habilitar la indexación, mi problema ahora está solucionado:
defaults delete com.apple.dt.XCode IDEIndexDisable
Ahora puedo usar las funciones de D & D de Interface Builder. Espero que esto pueda ayudar a otros ...
Noté que el archivo .m se movió dentro de la carpeta en.lproj.
Simplemente elimine (solo referencia) el archivo .m de Xcode y saque .m de en.lproj. Vuelva a agregarlo. Solucionará el problema.
No te preocupes, recuperarás todas tus conexiones.
Para el archivo * .m de esta vista de clase abra "Mostrar inspector de archivos" y desmarque "Membresía objetivo" para este proyecto, luego haga Limpiar (menú Producto-> Limpiar) y vuelva a verificar "Membresía objetivo" para este proyecto
Para mí, ni la limpieza ni la eliminación de DerivedData resolvieron el problema.
Intenté eliminar y recrear mi clase UIViewController varias veces y obtuve el problema una y otra vez.
Luego recreé la clase UIViewController y le di un nombre diferente. Esto resolvió mi problema.
Para mi caso, tengo proyectos múltiples con algunas otras dependencias. Traté de resolverlo borrando datos derivados o reiniciando XCode, pero no funcionó. Al final, probé el siguiente método y funciona:
Vaya a destino> Construir arquitecturas de destino solamente> y configure Depuración y Liberación en NO.
Establezca esto para todos los proyectos en el espacio de trabajo y vuelva a compilar para asegurarse de que no haya otros errores. Tal vez no tiene sentido, pero de alguna manera lo hizo. Durante mi compilación, tuve otros problemas, como errores de enlazador y símbolos no encontrados.
Puede que esto no funcione para su problema específico, pero de vez en cuando obtengo ese error cuando trabajo con plumillas recién creadas. Eliminar y volver a crear los nibs y View Controllers con los mismos nombres que antes no resolvía el problema, pero relanzar Xcode sí.
Quizás lo que funcionó para mí es esto ... (Xcode v4.5)
Esto no funcionó
Estaba intentando controlar el arrastre en la definición de la interfaz de mi .h
@interface SearchViewController : UIViewController
@end
Esto funcionó (puede que así sea como se suponía que funcionaba, no lo sabía antes) Ver los corchetes de abrir y cerrar. Controle la función de arrastrar y soltar después del corchete cerrado.
@interface SearchViewController : UIViewController
{
}
@end
Renombrar los archivos de clase puede desvincularlos del XIB. Esta respuesta me ayudó a descubrir esto:
Ctrl-Arrastrar desde el botón al método no funciona. Xcode / Interface Builder
Verifique que su clase personalizada esté configurada correctamente en el Inspector de identidad.
Síntoma similar, pero causa diferente.
Aparentemente toco el retroceso cuando el foco estaba en la vista del asistente, porque una de las líneas de comentarios de la plantilla de archivo estándar pasó de // a / lo que da como resultado que el archivo no se compile.
La reparación del comentario permitió al SDK analizar el archivo, reconocerlo como UIViewController y agregarlo a la salida.
SO - si tiene este problema, haga una compilación o analice para ver si hay errores que deben corregirse en su archivo .h de controlador de vista. LUEGO prueba las otras soluciones.
Si copió archivos de otro proyecto, asegúrese de marcar la casilla "Agregar a destinos"
Si reiniciar Xcode no funciona en su caso, he encontrado que funciona el alternar el nuevo archivo .m y volver a la membresía objetivo.
Simplemente intenté todo aquí y nada funcionó (utilizando una vista previa de desarrollador para Xcode 5).
Lo único que funcionó para mí fue poner esta línea incompleta en mi archivo de interfaz:
@property (nonatomic, weak)
Por alguna razón, agregar salidas y acciones arrastrando y soltando desde un .xib funcionó bien después de eso.
Simplemente ponga una línea entre @implementation y @synthesize. La mayoría de las respuestas aquí tienen eso en común. Funcionó para mí
@implementation
@synthesize
Tuve el mismo problema. Y lo intenté:
- Reiniciar Xcode
- Eliminar datos derivados
- Y muchos más
Nada de eso funcionó. Lo que funcionó para mí fue simplemente:
- Elimine archivos de clase "sospechosos" de Project (solo elimine Referencias, ¿eh?)
- Vuelva a agregarlos al proyecto
¡Y hecho!
Tuve un problema similar con un proyecto escrito en Swift.
Lo que funcionó para mí fue configurar el IBOutlet en código como este
@IBOutlet var foo: UIView?
y luego conéctelo a Interface Builder arrastrando hasta el pequeño círculo que apareció justo al lado de la línea de código.
Usando Swift, tuve un problema similar. Descubrí que los comentarios eran parte del problema para mí.
Aproveché el controlador de vista predeterminado, hice algo de trabajo en él, luego creé un segundo controlador de vista copiando todo el primero, quitándolo para viewDidLoad () y cambiando el nombre de la clase a TestViewController. Builds trabajado, código ejecutado. Todo estuvo bien.
Cuando fui a arrastrar un UITextField para crear una salida, no me lo permitió. Me di cuenta de que mis comentarios todavía decía "ViewController.swift", así que cambié el texto del comentario a "TestViewController.swift" y reconstruí. ¡Pude conectar mi outlet!
Me pregunto si lo que ocurrió es que Indexer estaba leyendo los comentarios y los nombres de las clases, y de alguna manera se confundió.
en XCode vaya al organizador, haga clic en proyecto, haga clic en eliminar datos derivados ... luego de limpiar el proyecto