Push view depuis l'AppDelegate

TerflogagTerflogag Membre
juillet 2015 modifié dans API UIKit #1

Hello,


 


j'ai un soucis pour le push depuis l'AppDelegate.


 


Je voudrait lorsque l'on ouvre l'application depuis une notification ouvrir l'application sur la bonne vue. Dans mon cas il s'agit de vues contenu dans un TabBarController lui meme contenu dans un NavController (il s'agit en fait d'un onglet de ma side bar). 


 


J'ai essayé comme ceci, mais sans succès : 



UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
            UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@MainStoryboard bundle: nil];
            RequestReceptViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@receptRequestView];
            [navigationController pushViewController:vc animated:YES];

Avez vous une idée ? 


 


Bonne après midi ! 


 


EDIT : mauvaise partie du forum, si un modérateur passe dans le coin pourrait il déplacer dans la bonne section ? 


J'ai également utilisé la fonction signaler a mauvais escient pour faire cette demande, je m'en suis rendu compte un peu tard apres avoir envoyé, désolé ! 


Réponses

  • Salut,


     


    1. Est-ce que le root controller est bien un UINavigationController ?  ( Tu peux tester ça avec un nslog par exemple)

  • D'après l'architecture de mon application je dirai que oui ! 


     


    Mais je n'ai pas bien saisi comment vérifier avec un NSLog en revanche. 


  • Par exemple:



    NSLog(@RootViewController class: %@", [self.window.rootViewController class]);
  • C'est class le Swift ..

  • Apres avoir fait le test, c'est bien un UINavigationController ! 


     


    Et oui le swift ça a l'air plus que sympa, mais dans le cadre d'un apprentissage (ce qui est mon cas) les ressources sont bien moindre que pour l'Objective-C... 


  • Euh .. en fait c'était un jeu de mot sur la similitude entre classe et class. 


     


    Si tu ne connais pas les vidéos de l'université de Jussieu sur le Swift, clique sur le lien dans ma signature.

  • Est ce que ton "vc" est différent de nil?


    Qu'as tu dans le log?


    Qu'est ce que ton code fait si tu mets ça par exemple?



    UIViewController *controller = nil;
    [(UINavigationController *)self.window.rootViewController pushViewController:controller animated:YES];

    Normalement ça devrait te push une view noire.


    As tu mis un point d'arrêt pour être sur que tu passes bien dans la fonction où tu as placé tes lignes de codes?


    Sinon chez moi ça marche plutôt bien je sais pas de quoi ça vient...


  • J'ai tout re tester (je n'avais pas de view noir) dans une autre application plus simple et je n'avais pas de soucis.


    Après avoir pris un ancienne sauvegarde et effectué un Clean cela marche (avec le code du premier message du topic), bizarre...


     


    Topic résolu ! 


     


    Bonne journée et merci pour l'aide 


  • Joanna CarterJoanna Carter Membre, Modérateur
    juillet 2015 modifié #10

    Petite question à  Terflogag - pourquoi mettre le code de présentation dans l'appDelegate ?


     


    À part du code d'initialisation d'autres choses non-visuelles, voice le code de la plupart de mes apps :



    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    return YES;
    }

    Vas-tu au Target du projet, sélectionnes-tu General et, sous Deployment Info, pour Main Interface, sélectionnes-tu le storyboard concerné. Automatiquement, le contrôleur de la vue que tu as marqué comme "Entry Point" sera chargé et sa vue sera affichée.


     


    Aucun besoin de code  :-*


  • Oulah effectivement, ce n'est pas la cas pour moi.


     


    Mais comment fais tu dans le cas de l'ouverture de l'application depuis une notification ? 


    La gestion de ce cas me semble plus simple dans didFinishLaunchingWithOptions, étant donner que nous avons accès ici au launchOptions.

Connectez-vous ou Inscrivez-vous pour répondre.