Pregunta

Aquí está mi pregunta:

Tengo una aplicación funcionando sin problemas en iOS 3.0 He estado trabajando mucho tiempo para portarlo a 4.0 y para incluir las nuevas características.

He añadido iAds utilizando Interface Builder.

Yo sé que tengo que definirlo mediante programación para soportar dispositivos todavía 3.0. Yo débil vinculado al marco. Sin embargo, la aplicación se bloquea al cargar la SEMILLA.

¿Hay una manera de cargar NIB dependiendo de la versión del firmware? Digamos que tengo FirstView.xib y FirstView3X.xib

¿Cómo puedo elegir cuál va a ser cargado dependiendo del firmware?

Gracias

PD: Es mi primera pregunta en StackOverflow!

¿Fue útil?

Solución

Felicitaciones a su primera pregunta :-) ¿Cómo se carga las puntas? Es una buena idea de dividir la interfaz en varios archivos. Generalmente uso una punta separada por cada controlador y cargarlos usando el inicializador initWithNibName:bundle:. Dado que usted indica el nombre de la semilla aquí, usted puede fácilmente personalizar el comportamiento de carga.

Si carga las puntas utilizando el controlador de la barra de pestañas, es probable que tenga todas las fichas en una punta. Creo que sería romper las lengüetas en puntas separadas y cargarlos mediante programación:

id tab1 = [[UIViewController alloc] initWithNibName:@"Tab1" bundle:nil];
id tab2 = [[UIViewController alloc] initWithNibName:@"Tab2" bundle:nil];
id tab3 = [[UIViewController alloc] initWithNibName:@"Tab3" bundle:nil];
[tabBarController setViewControllers:[NSArray arrayWithObjects:
    tab1, tab2, tab3, nil]];

Y puesto que ahora tendría el control sobre los nombres de plumilla, fácilmente se podría detectar la versión de firmware y cargar la punta correcta:

id tab1 = [[UIViewController alloc] initWithNibName:
    [self nibNameForCurrentFirmware] bundle:nil];

En cuanto a la propia detección de la versión de firmware, creo que se podría utilizar [UIDevice sistemaVersión] .

Otros consejos

Puede tirar de la versión actual del objeto UIDevice:

NSString *osVersion = [[UIDevice currentDevice]systemVersion];
NSArray *ver = [osVersion componentsSeparatedByString:@"."];

Si usted es feliz con la comparación de cadenas de valores individuales (por ejemplo [[ver objectAtIndex:0] isEqualToString:@"3"]). Es posible que desee convertir los números de versión de números enteros para que pueda compararlas para la gama (por ejemplo, osMajor >= 4).

También puede comprobar si hay ciertas clases de existir y cargar la SEMILLA adecuado en función de lo siguiente:

if (NSClassFromString(@"MKMapView") != nil) {
    /* Do map stuff... */
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top