Antecedentes¿Usar múltiples archivos de punta con un solo controlador de vista?
estoy usando constructor de interfaces para crear la interfaz de usuario de una aplicación que estoy trabajando. La aplicación tiene una sola pantalla que muestra una serie de botones. Al hacer clic en un botón aparece una vista asociada que se superpone a los botones. Al hacer clic en otro botón, se oculta la vista de superposición anterior y se muestra otra.
Demasiado fácil para la administración de la IU en IB Decidí crear múltiples archivos de punta para cada subvista que aparece al hacer clic en el botón correspondiente. Luego estoy cargando el archivo de punta de la subvista en el método viewDidLoad
del controlador de vista usando la clase UINib
.
La idea detrás de esto era evitar tener varias vistas apiladas una encima de la otra en un solo archivo de punta, ya que sería difícil de manipular en IB. Pude haber creado todas las vistas en código, pero esto requeriría mucha codificación tediosa ya que los diseños de cada subvista son bastante complejos (con varias vistas secundarias).
Código de ejemplo cargando una subvista desde un archivo de punta.
- (void)viewDidLoad
{
UINib *aSubViewNib = [UINib nibWithNibName:@"aSubView" bundle:nil];
NSArray *bundleObjects = [aSubViewNib instantiateWithOwner:self options:nil];
// get root view from bundle array
UIView *aSubView = [bundleObjects objectAtIndex:0];
[self.view addSubview:aSubView];
...
El código anterior se repite para las otras vistas.
Para resumir, tengo una aplicación de iPhone de una sola pantalla que tiene vistas en capas que se muestran/ocultan al hacer clic en los botones. Esto se logra con un único controlador de vista con un archivo de punta asociado y una serie de archivos de punta adicionales para las subvistas que se cargan en el método viewDidLoad del controlador de vista.
¡Preguntas!
Perdón por la larga presentación pero quería dejar bien en claro qué es lo que estoy haciendo.
- ¿Mi enfoque es malo o inusual?
- ¿Hay algún problema potencial para hacerlo de esta manera?
- ¿Qué han hecho otras personas cuando necesitan una interfaz dinámica y todavía quieren mantener todo en Interface Builder?
Notas
Antes de que alguien le pregunta por qué no me acaba de mostrar los puntos de vista sub en una nueva pantalla y utilice la barra de navegación, quiero decir que tengo muy buenas razones y yo entiendo iOS Directrices de UI. El caso de uso anterior no es exactamente mi caso de uso, pero es uno que describe claramente el problema sin atascarse en mi aplicación de desarrollo.
También sé que podría haber escrito todas las vistas secundarias como código, pero cada subvista tiene un diseño complejo de vistas secundarias y sería un montón de código y de solución intentar que se vean bien.
Gracias de antemano.
Entonces, para mi caso de uso, donde la única razón por la que dividí las vistas en archivos nib separados fue para facilitar la administración de esas vistas en IB, ¿cree que mi enfoque es seguro o rompe las directrices de Apple? – Camsoft
No existe una regla o directriz con respecto a lo que está haciendo. Estás bien en ese sentido. – Jim
Agregué un ejemplo de un componente de software real que usan muchos desarrolladores. Ver mi respuesta más arriba para más detalles. – Jim