2011-12-28 26 views
6

Estoy desarrollando una aplicación iOS 4 y he desarrollado algunas clases que quiero usar en otros proyectos.Heredar clase UIViewController y XIB

Una de estas clases, llamada MapViewController, es una subclase UIViewController. Esta clase usa un archivo XIB que he creado con el constructor de interfaz.

Me pregunto si un uso MapViewController en otro proyecto como una súper clase de una nueva clase, ¿Cómo puedo usarlo asociado XIB?

Quiero volver a utilizar MapViewController y su XIB, pero no sé si tengo que hacer algo especial con el archivo XIB.

No sé cómo explicar esto. Si necesita más detalles, por favor dígame.

ACTUALIZACIÓN:

quiero crear una nueva clase que hereda de MapViewController, así:

... 
@interface NewMapViewController : MapViewController { 

... 

Y, ahora si quiero seguir usando el mismo XI ter (la de MapViewController), ¿qué debo hacer?

+0

Voy a tratar de entender, usted quiere estar capaz de usar su MapViewController y su XIB, pero si necesita algún comportamiento especial, ¿no quiere usar XIB? – Peres

+0

No está claro cuál es el problema exacto. – Max

+1

Lo siento. Acabo de actualizar mi pregunta con más detalles. – VansFannel

Respuesta

6

Dado que va a heredar de MapViewController, su MapViewController se convierte en la superclase. Y también tiene MapViewController.xib. Parece bastante sencillo para mí si se utiliza el inicializador para NewMapViewController

NewMapViewController.m

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    NSLog(@"Subclass initWithNibName called"); 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

inicializar su NewMapViewContoller como:

//Nib of super class is MapViewController 
NewMapViewController *nmapController = [[NewMapViewController alloc] initWithNibName:@"MapViewController" bundle:[NSBundle mainBundle]]; 
+0

No, no lo hace. Lo intenté. De hecho, initWithNibName nunca se llama. –

+0

@JimThio He editado mi respuesta. Probé este y funciona para mí. Pruébalo y házmelo saber. – MadhavanRP

+0

Funcionó para mí en iOS 9.2, ¡gracias! – webo80

Cuestiones relacionadas