Estoy diseñando una aplicación de cuestionario simple. La aplicación necesita mostrar diferentes tipos de cuestionarios. Cada tipo de cuestionario tiene un comportamiento distinto y una IU.diseño de subvista de iPhone (UIView vs UIViewController)
La interfaz de usuario será algo como esto: alt text http://dl.getdropbox.com/u/907284/Picture%201.png
Me gustaría ser capaz de diseñar cada tipo de QuizQuestion en Interface Builder.
Por ejemplo, un MultipleChoiceQuizQuestion se vería así: alt text http://dl.getdropbox.com/u/907284/Picture%202.png
Originalmente, tenía planeado hacer la clase QuizQuestion un UIViewController. Sin embargo, leí en la documentación de Apple que UIViewControllers solo debería usarse para mostrar una página completa.
Por lo tanto, hice mi QuizController (que administra toda la pantalla, por ejemplo, botones previos/siguientes) un UIViewController y mi clase QuizQuestion una subclase de UIView.
Sin embargo, se debe cargar este UIView (creado en IB), debo hacer lo siguiente en mi constructor [1]:
//MultipleQuizQuestion.m
+(id)createInstance {
UIViewController *useless = [[UIViewController alloc] initWithNibName:@"MultipleQuizQuestion" bundle:nil];
UIView *view = [[useless.view retain] autorelease];
[useless release];
return view; // probably has a memory leak or something
}
Este tipo de acceso no parece ser estándar o orientado a objetos. ¿Este tipo de código es normal/aceptable? ¿O hice una mala elección en algún lugar de mi diseño?
Gracias,
de edición (para mayor claridad): Me gustaría tener una clase separada para controlar el multipleChoiceView ... como un ViewController pero al parecer eso es sólo para las ventanas enteras. Tal vez debería hacer un MultipleChoiceViewManager (¡no el controlador!) Y configurar el propietario del archivo en su lugar.
Gracias, pero me gustaría tener una clase separada para controlar el MultipleChoiceView ... como un ViewController, pero aparentemente eso es solo para ventanas enteras. Tal vez debería hacer un MultipleChoiceViewManager (¡no el controlador!) Y configurar el propietario del archivo en su lugar. – tba
Creo que te lo estás haciendo más difícil hacerlo de esa manera. La delegación es lo que debe usar independientemente, por lo tanto, su decisión depende del lugar donde desee su código, en su propia clase o en la clase de controlador de vista donde se utilizará. Obviamente, depende de usted, pero no creo que gane nada colocándolo en su propia clase. Atentamente. –