Impossibile utilizzare UISplitViewController in un'applicazione universale?
-
28-09-2019 - |
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.
- In Xcode, creare un app "a base di Window" Universale.
- 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;
}
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;
}