È possibile sovrascrivere il controller di visualizzazione predefinito da uno storyboard per mostrare invece un controller diverso? Questo accadrebbe ovviamente in AppDelegate.ios modifica lo storyboard del controller di visualizzazione predefinito in fase di esecuzione
5
A
risposta
10
@ Martol1ni Volevo usare la tua risposta, ma volevo anche stare lontano da inutili confuse storyboard, così ho ottimizzato il tuo codice un po '. Comunque ti ho dato un +1 per la tua risposta ispiratrice.
Ho messo tutto quanto segue sul controller predefinito.
- (void)gotoScreen:(NSString *)theScreen
{
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
UIViewController *screen = [self.storyboard instantiateViewControllerWithIdentifier:theScreen];
[app.window setRootViewController:screen];
}
E quindi dove avviene la logica, chiamerò quanto segue, se necessario.
if(myBool == YES) {
[self gotoScreen:@"theIdentifier"];
}
5
Definitivamente incorporo un rootView in un UINavigationController, quindi non hai due, ma tre viste. L'uno non viene mai lanciato, solo nel controllo di tutti gli altri. Quindi implementa i metodi in questo modo:
- (void) decideViewController {
NSString * result;
if (myBool) {
result = @"yourIdentifier";
}
else {
result = @"yourOtherIdentifier";
}
self.navigationController.navigationBarHidden = YES; // Assuming you don't want a navigationbar
UIViewController *screen = [self.storyboard instantiateViewControllerWithIdentifier:@"view1ident"];
[self.navigationController pushViewController:screen animated:NO]; // so it looks like it's the first view to get loaded
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self decideViewController];
}
Non sembra mai che la prima vista sia stata caricata. Se stai usando NIBS, puoi comunque fare tutto da AppDelegate ...
Il ViewController predefinito è dichiarato in info.pList nell'ultimo SDK. Dovrebbe controllare qualcosa all'avvio, e poi decidere quale viewcontroller premere? – Martol1ni
@ Martol1ni sì, quello che hai detto è esattamente quello che sto cercando. – Jacksonkr
Stai usando un UINavigationController? – Martol1ni