Pregunta

Estoy teniendo problemas para conseguir UISplitViewController de trabajo en una aplicación universal, donde ya he codificado la parte iPhone. Como método de resolución de problemas, decidí comenzar con un nuevo proyecto y sólo tratar de hacer la única acción que está causando un problema y lo sigue siendo.

Si creo una aplicación universal y en el controlador de IPAD crear una vista dividida (ya sea en una o en el código XI ter), entonces aparece como negro (a menos que me puse un color de fondo). Si lo hago en un iPad-única aplicación, se muestra muy bien.

te agradecería si alguien pudiera probar esto por su cuenta y ver si tienen la misma cosa, o dime dónde voy mal.

  1. En Xcode, crear una aplicación de "basadas en la ventana" universal.
  2. Go en el controlador iPad y pegar en el código en la parte inferior.

Lo que se ve es una pantalla en negro, no una vista dividida. El mismo código funciona en un IPAD de sólo proyecto. Lo que estoy haciendo mal, o lo que se configura mal?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    UISplitViewController *split = [[UISplitViewController alloc] initWithNibName:nil bundle:nil];

    UIViewController *vc1 = [[UIViewController alloc] initWithNibName:nil bundle:nil];
    vc1.view.backgroundColor = [UIColor redColor];

    UIViewController *vc2 = [[UIViewController alloc] initWithNibName:nil bundle:nil];
    vc2.view.backgroundColor = [UIColor blueColor];

    split.viewControllers = [NSArray arrayWithObjects:vc1, vc2, nil];

    [window addSubview:split.view];
    [window makeKeyAndVisible];

    [vc1 release];
    [vc2 release];
    [split release];

    return YES;
}
¿Fue útil?

Solución

En primer lugar, no debe revelar su vista dividida en didFinishLaunchingWithOptions. Añadirlo a su interfaz (bajo UIWindow) y sólo lo liberan en dealloc. En segundo lugar, subclase UISplitViewController de la siguiente manera:

@interface MySplitViewController : UISplitViewController
{
}
@end
@implementation MySplitViewController
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}
@end

En tercer lugar, sus didFinishLaunchingWithOptions debería tener este aspecto:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    split = [[MySplitViewController alloc] init];

    UIViewController *vc1 = [[UIViewController alloc] init];
    vc1.view.backgroundColor = [UIColor redColor];

    UIViewController *vc2 = [[UIViewController alloc] init];
    vc2.view.backgroundColor = [UIColor blueColor];

    split.viewControllers = [NSArray arrayWithObjects:vc1, vc2, nil];

    [window addSubview:split.view];
    [window makeKeyAndVisible];

    [vc1 release];
    [vc2 release];

    return YES;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top