2011-02-05 10 views
11

Estoy tratando de hacer una aplicación que funcione tanto en iPhone como en iPad. Estoy buscando cómo hacer una interfaz compatible en ambos. Cuando la aplicación se carga, estoy mostrando una vista de tabla. ¿Cómo puedo cargar diferentes plumillas en función del dispositivo? Estoy usando esto para cambiar entre las puntas.¿Cómo hacer una versión de iPhone y iPad de una aplicación?

if ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)]) 
    { 
     if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) 
     { 
      device = @"iPad"; 
     } 
     else 
     { 
      device = @"iPhone"; 
     } 

    } 

Pero en MainWindow.xib que dice la vista se carga desde el controlador de vista para el iPhone. ¿Puedo hacer esto dinámico basado en el dispositivo? es decir, quiero mostrar desde el comienzo de la aplicación diferentes puntas basadas en el dispositivo. Gracias.

Respuesta

6

se puede hacer eso de una manera similar:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ 
    mainMenu = [[MainMenu alloc] initWithNibName:@"MainMenuiPad" bundle:nil]; 
}else{ 
    mainMenu = [[MainMenu alloc] initWithNibName:@"MainMenu" bundle:nil]; 
} 
+0

Gracias por la respuesta. Como dije al abrir MainWindow.xib en el constructor de interfaces, dice 'la vista se carga desde el abc_iPhoneAppViewController' que es la IU para iPhone. ¿Cómo puedo cambiarlo a iPad uno? Ya sea en IB o mediante código. Podría dar un ejemplo detallado. Gracias – Nikil

5

Para hacer aplicación universal,

set-1

familia de destino en información pestaña construir para aplicación como iPhone/iPad.

2- ventana Eliminar desde la ventana principal.

3- Agregar dos uno xib para iPhone y otra para iPad (seleccionando xib IPAD). clase AppDelegate

4- marca como archivo controlador para estos de xib.

5- Agregar ventana en estos xibs y vista del controlador de controlador o la navegación y por IB inspector establecidos Nombre de carga punta y el archivo de controlador de aquí cuál es tu primera vista.

6- y luego hacer xib differnet para iPad y iPhone, que tiene tableview u otros controles.

7-Hacer archivo de controlador de único o diferente archivo controladora de dispositivo diferente para la misma es necesario comprobar el dispositivo por esto si condición else

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ 

8-Ahora tiene que cargar xib en clase AppDelegate en el método didFinishL--

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ 

    // load your nib for iPad here which having view controler or navigation controller as well window. 
}else{ 
    //load nib for iPhone. 
} 
0

probar este en su Info.plist:
archivo semilla principal nombre de la base [NSMainNibFile]: MainWindow_iPhone
Nombre base del archivo de la lista principal (iPad) [NSMainNibFile~ipad]: MainWindow_iPad

Espero que esto lo ayude.

27

En realidad, Apple hace todo esto automáticamente, sólo el nombre de sus archivos NIB:

MyViewController~iphone.xib // iPhone 
MyViewController~ipad.xib // iPad 

y cargar su controlador de vista con la menor cantidad de código:

[[MyViewController alloc] initWithNibName:nil bundle:nil]; // Apple will take care of everything 
+1

+1 fue muy útil – Jomoos

+1

NB: como alguien publicado en una lista de correo recientemente ... ¡tenga cuidado de corregir el caso! código especial de Apple es sensible a mayúsculas - si se escribe "iPhone" o "iPad" se encuentra este error de forma silenciosa, sin ninguna explicación :( – Adam

+0

@ Adam esto no está funcionando para IOS5.Intenté con ios6 y para eso está funcionando bien. ¿Alguna idea de por qué no funciona? – Heena

Cuestiones relacionadas