Ok, aquí hay otra pregunta.Cargando UIView desde un archivo de punta sin conjeturas
Estoy creando una UIView llamada ProgressView
que es una vista semitransparente con un indicador de actividad y una barra de progreso.
Quiero ser capaz de utilizar esta vista en diferentes controladores de vista en mi aplicación, cuando sea necesario.
sé de 3 maneras diferentes de hacer esto (pero sólo estoy interesado en uno):
1) Crear toda la vista mediante programación, instanciar y configurar según sea necesario. No me preocupa que lo tenga.
2) Cree el UIView en el constructor de interfaz, agregue los objetos necesarios y cárguelo usando un método como el siguiente. El problema con esto es que básicamente estamos adivinando que la vista es objectAtIndex: 0 porque en ninguna parte de la documentación encontré una referencia al orden de los elementos devueltos por la función [[NSBundle mainBundle] loadNibName:
.
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"yournib"
owner:self
options:nil];
UIView *myView = [nibContents objectAtIndex:0];
myView.frame = CGRectMake(0,0,300,400); //or whatever coordinates you need
[scrollview addSubview:myView];
3) Subclase UIViewController y permite administrar la vista como de costumbre. En este caso, yo nunca sería realmente empujando el controlador de vista en la pila, sino sólo su vista principal:
ProgressViewController *vc = [[ProgressViewController alloc] initWithNibName:@"ProgressView" bundle:nil];
[vc.view setCenter:CGPointMake(self.view.center.x, self.view.center.y)];
[self.view addSubview:vc.view];
[vc release];
Por lo que yo puedo decir, # 3 es la forma correcta de hacer esto (aparte de mediante programación) pero no estoy del todo seguro de si es seguro soltar el controlador de vista de ProgressView, mientras que la vista de otro controlador conserva su vista principal (¿la sensación interna dice que va a tener fugas?)?
¿Qué debo hacer en términos de gestión de memoria en este caso, dónde y cuándo debería liberar el controlador de vista de ProgressView?
Gracias de antemano por su opinión.
Saludos,
Rog
Parece bastante bueno para mí, gracias! – Rog
¿Puedo comentar que creo que aún recibirá el error si establece el propietario en sí mismo como se muestra en el código. Corrígeme si me equivoco, pero la única forma en que pude lograr esto fue haciendo que el propietario sea el objeto "contenedor". –
Oye, esto funciona para mí, gracias. Diré que es un poco extraño, no exactamente intuitivo. Olvidé conectar el IBOutlet la primera vez, por ejemplo. Parece que Apple debería hacer que esta capacidad sea un poco más fácil de acceder. – Jeff