Estoy abriendo una nueva pregunta para el seguimiento de mi última (superview and parentviewcontroller nil after adding a subview). Básicamente entiendo que usar subvistas es una buena idea, pero que no debería tener un ViewController que controle una subvista que viva dentro de otro ViewController. Básicamente me gustaría hacer lo siguiente ... Tengo dos ViewControllers que comparten una subvista común. Creé esa subvista como una punta llamada SearchDate.xib. El propietario del archivo es una clase correspondiente SearchDateView.m/h. Esa clase tiene una salida para el único elemento dentro de UIView en el plumín, que es una etiqueta. La clase SearchDateView también tiene una función para cambiar el valor de la etiqueta en SearchDateView.xib. Me gustaría que mis ViewControllers carguen esta plumilla, pero aparentemente no tengo idea de cómo cargar correctamente la plumilla. No importa lo que haga, en el mejor de los casos, no se muestra nada y, en el peor, se lanza una excepción. Los Apple Docs hablan de arrastrar en otras instancias de clases en IB directamente a su vista principal, pero parece que no funciona. Tengo una toma SearchDateView en mi ViewController y he intentado hacer esto en vista de la carga del controlador:¿Cómo puedo crear un plumín con una clase de vista asociada que pueda ser utilizado por múltiples ViewControllers?
searchDateView = [[[NSBundle mainBundle] loadNibNamed:@"SearchDateView" owner:self options:nil] objectAtIndex:0];
[[self view] addSubview:searchDateView];
Pero consigo esta excepción:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<MainViewController 0x431fac0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key searchDateLabel.'
Yo sé que estoy haciendo algo totalmente equivocado, pero lo ¿Es la forma correcta de tener un plumín, una clase de vista asociada que actualiza algunos de los objetos en ese plumín y reutilizar ese plumín en diferentes controladores?
EDIT: Dado el comentario, quizás esto no fue lo suficientemente claro. No quiero usar el mismo archivo de punta para una vista ENTERA, sino una subvista. Entonces, por ejemplo, el controlador A tiene un mapa y también un SearchDateView, y el controlador B tiene una vista de tabla y un SearchDateView. Así que me pregunto cómo cargar una subvista en múltiples controladores ...
Lo siento, quizás no estaba demasiado claro. No quiero usar el mismo archivo de punta para una vista ENTERA, sino una subvista. Entonces, por ejemplo, el controlador A tiene un mapa y también un SearchDateView, y el controlador B tiene una vista de tabla y un SearchDateView. Así que me pregunto cómo cargar una subvista en múltiples controladores. – deadroxy
Actualicé mi respuesta para ser más específico a su situación. – Nimrod
Sí, la superclase parece ser la única solución "real" para mi problema. Probablemente volveré a refactorizar más tarde, pero por ahora he encontrado algunas soluciones, ¡gracias! – deadroxy