2016-01-22 1 views
0

J'ai un viewController instancié par storyboard sur le lancement de l'application qui fait partie de l'application hybride. En plus de cela, j'ai présenté un autre contrôleur de vue. Maintenant, tout en rejetant le presentedViewController je veux également rejeter le rootViewController afin de montrer l'écran de l'application hybride. Comment puis-je atteindre cet objectif?rejeter rootViewController sur le bouton tap

+0

Pouvez-vous s'il vous plaît partager votre code façon dont vous présentez votre RootViewController et otherViewController – iOSEnthusiatic

+0

[_arViewController setOnlyShowItemsWithinRadarRange: OUI]; [self presentViewController: _arViewController animé: NO achèvement: néant]; } Voici comment j'ai présenté le second ViewController. Le premier est le ViewController par défaut du storyboard –

+0

Il va rejeter le ViewController présenté. Je souhaite ignorer/Supprimer le rootViewController pour que l'écran de l'application hybride s'affiche. –

Répondre

0
[self dismissViewControllerAnimated:YES completion:^{ 


// after your second view controller dismissed. 
// set your new view controller as a root of window. 
// You need to set navigation controller and set any root view controller for that navigation controller in storyboard. 
// also don't forget to set identifier of your navigation controller. 


    UINavigationController* rootController = [[UIStoryboard storyboardWithName:kStoryboardName bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"controllerIdentifier"]; 

    UIWindow* window = [[UIApplication sharedApplication] keyWindow]; 
    window.rootViewController = rootController; 

    // this will set your new navigation controller with root view on UIWindow. 

}]; 
+0

"Fenêtre de propriété introuvable sur l'écran ViewController présenté" –

+0

voir ma réponse modifiée – iOSEnthusiatic

+0

Je souhaite supprimer le ViewController racine uniquement au lieu de le remplacer par d'autres contrôleurs. Ensuite, seul l'écran de l'application hybride peut prendre des clics dessus. À l'heure actuelle, l'écran des applications natives reste au-dessus de l'écran de l'application hybride, ce qui fait que l'application hybride n'accepte aucun taps. –

1

OK, je ne connais rien à Worklight. Ou quelle est une application hybride. Donc, cela peut ne pas avoir de sens. Mais voici une réponse strictement iOS à votre question.

Il n'est pas vraiment judicieux de fermer le contrôleur de vue racine sans le remplacer par un autre contrôleur de vue. Si vous le faites, vous quitterez votre application sans aucun moyen d'interagir avec elle (sauf peut-être secouer le téléphone?).

Il n'y a donc pas moyen de l'ignorer comme vous pouvez avec les contrôleurs de vue enfant. Mais vous pouvez simplement l'enlever.

UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow; 
[keyWindow.rootViewController.view removeFromSuperview]; 
keyWindow.rootViewController = nil; 
0
NSMutableArray *viewControllers = [self.navigationController.viewControllers mutableCopy]; 
[viewControllers removeObjectAtIndex:0]; 
[self.navigationController setViewControllers:viewControllers];