Domanda

Sto avendo difficoltà a raggiungere UISplitViewController di lavoro in un'applicazione universale, dove ho già codificato la porzione di iPhone. Come metodo di risoluzione dei problemi, ho deciso di iniziare con un nuovo progetto e cercano solo di fare l'unica azione che sta causando un problema e lo è ancora.

Se creo un'applicazione universale e nel controller iPad creare una vista split (sia in un XIB o in codice), allora appare come nero (a meno che non ho impostato un colore di sfondo). Se lo faccio in un iPad-unica applicazione, viene visualizzata bene.

sarei grato se qualcuno potesse provare questo da soli e vedere se ottengono la stessa cosa, o dirmi dove sto andando male.

  1. In Xcode, creare un app "a base di Window" Universale.
  2. Vai nel controller iPad e incolla il codice in basso.

Quello che ottengo è uno schermo nero, non una vista divisa. Lo stesso codice funziona in un progetto iPad-only. Che cosa sto facendo di sbagliato, o ciò che è stato configurato correttamente?

- (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;
}
È stato utile?

Soluzione

Prima di tutto, non si deve rilasciare il vostro vista suddivisa in didFinishLaunchingWithOptions. Aggiungilo alla tua interfaccia (sotto UIWindow) e solo rilasciarlo su dealloc. In secondo luogo, sottoclasse UISplitViewController come segue:

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

In terzo luogo, i tuoi didFinishLaunchingWithOptions dovrebbe essere simile a questo:

- (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;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top