[Résolu] Ouvrir un tuto à  la 1ère ouverture de l'application

Am_MeAm_Me Membre
septembre 2014 modifié dans API UIKit #1

Bon je pense que tout est dans le titre mais voilà  le problème : 


 


Maintenant je voudrai en faire en sorte qu'à  la première ouverture de l'application une TutoViewController (TutoVC plus tard) s'ouvre pour initier l'utilisateur.


 


Je me retrouve avec 2 solutions 


 


 


1) A l'ouverture de l'application j'appel une UIAlertView (Voulez-vous suivre un tutoriel) puis je mettrai un bouton "Oui" et "Non" 


 


Si Oui j'ouvre une nouvelle UIViewController avec un bout de code comme celui-ci



UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@Main bundle:nil];
TutoVC *detailView =[storyboard instantiateViewControllerWithIdentifier:@TutoVC];

[self presentViewController:detailView animated:YES completion:NULL]; 

Et si non je ne fait rien en gros 


 


2) Je lui simplifie la vie j'ouvre directement ma UIViewController dès le départ : mais là  est le problème car ma VC de départ est ma HomeView. Et je veux que ça reste telle quelle. Je m'en rappel brièvement d'avoir utilisé une fois [self addSubviewChild] un truc du genre mais la j'ai besoin de faire apparaitre un viewController. J'ai une petite idée en tête faire dans HomeView :



[self addSubViewChild:TutoVC.view]

Mais bon je ne suis pas sur que ça marche


 


 


Je voulais savoir comment vous faisiez ?


 


Et pour gérer le fait que ça n'apparaisse qu'à  la première ouverture je vais utilisé je pense KeyArchive avec NUserDefault je crois bien.


 


PS : J'utilise RESideMenu donc je ne sais pas si ça peut être bloquant "I don't know"


Réponses

  • Alf1996Alf1996 Membre
    septembre 2014 modifié #2
    Pour lancer le tutoriel uniquement à  la première exécution je stocke la version de l'application dans les NSUserDefaults. Dans le viewDidLoad je lis les préférences et si le numéro de version stocké est différent du numéro courant,je lance le tutoriel.... (à‰dit ca permet aussi de faire une viewDidLoad "what's News?" Lors des mises à  jour)

    Personnellement j'ai opté pour une vue sémi-transparente qui s'affiche et sur laquelle il y a des flèches qui décrivent les différents boutons. Fais une recherche on en a parlé récemment dans un post qui parlait d'ouverture dun pdf par l'application... (Je suis sur l'iPhone et la recherche est un peu compliquée !)


    à‰dit : c'est ici :

    http://forum.cocoacafe.fr/topic/10010-resolu-creer-un-fichier-daide/?hl=%20alf1996%20%20aide
  • Ok je vais chercher. Moi j'ai opté pour une UIScrollView avec une grande Width. Du coup pas besoin de bouton. Mais bon l'a n'est pas la le problème.


     


    Je cherche ton histoire sur les pdf.


  • Alf1996Alf1996 Membre
    septembre 2014 modifié #4
  • Am_MeAm_Me Membre
    septembre 2014 modifié #5

    Okay merci. Bon je vais me plonger dans UIPageControl car toute l'histoire de tracer ses propres flèches etc .. ça ne rentre pas dans mon contexte mes images resteront figés et au pire si j'ai besoins de les traduire UN jour je changerai la façon de raisonner. Mais ça ne risque pas (je bidouillerai des imageX_fr.png et imageX_en.png)


     


    Comme à  chaque fois qu'on se lance dans la doc ou tuto d'un nouveau concept je pense rencontrer des problèmes en cours de route ou peut être pas qui sait ?


    Si je galère je re-commenterai ici.


     


     


    ___


     


    Pour le moment j'ai déjà  mis un bouton dans mon appli pour donner la possibilité à  l'utilisateur de se "remater" l'aide (dans TutoVC). Mais bon j'ai l'impression que je vais devoir me retaper le code en double quoi. 1 fois pour tutoVC (qui hérite de UIviewController) et une fois pour mon UIpageControl bref. Après vu que je ne connais pas encore UIPageControl je ne peux pas trop avancer non plus 


     


     


    MAJ : je sais pas si c'est moi qui ai sauté un paragraphe ou pas mais je n'ai pas lu ou vu quelle méthode utilisait tu pour faire en sorte que la UIView (ScrollView) s'affiche au dessus mais je pense que c'est addChild ou addSubView (attention les noms sont surement incorrectes)


  • Am_MeAm_Me Membre
    septembre 2014 modifié #6

    Bon j'ai trouvé un tuto ici : http://iosclass.blogspot.fr/2013/08/introduction-to-uipagecontrol.html


     


    Assez ancien surement. Ca confirme ma théorie du addSubView. Bon si je ne dis pas de bêtises pour savoir si je dois ouvrir ou pas cette subview il faut que j'enregistre le numéro de version 1.0 par exemple


     


    Premier utilisateur ouvre l'application en 1.0 je cherche dans NSUserDefault si je ne trouve pas la clé "Tuto" : du coup j'ouvre le tuto


    Je creer une clé "Tuto" associée à  la valeur @1.0 


     


    Mise à  jour 1.1 


    L'utilisateur ouvre l'application : je compare le retour de NSUserDefault avec une macro par exemple ACTUAL_Version @1.1 si c'est différent j'affiche le nouveau tuto/ "What's new ?" (quoi de nouveau/neuf)


     


     


    MAJ : Bon c'est assez bizarre mais un UIpageControl faut slider à  l'envers


     


    Je vais plutôt reprendre mon code de la UIScrollview c'est dommage ...


     


    MAJ : 2 cool ils ont changé l'apparence de la doc Exemple : Ouahhhh je trouve ça plus plaisant à  lire. Pour le moment ça n'impacte qu'iOS et non mac


    Bon la doc sur UIScrollView est pas encore prête aie 


  • Am_MeAm_Me Membre
    septembre 2014 modifié #7

    Pour ce que ça intéresse voilà  le code ma UIScrollView : tout est par code donc j'ai pas utilisé IBoulet !! 



    NSInteger viewcount= 5;
    scroller = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

    NSArray *colors = [NSArray arrayWithObjects:[UIColor greenColor],[UIColor redColor],[UIColor blueColor],[UIColor blackColor],[UIColor purpleColor], nil];
    for(int i = 0; i< viewcount; i++) {

    CGFloat x = i * self.view.frame.size.width;
    UIImageView *view = [[UIImageView alloc] initWithFrame:CGRectMake(x, 0,self.view.frame.size.width, self .view.frame.size.height)];
    view.backgroundColor = [colors objectAtIndex:i];
    [scroller addSubview:view];
    }
    scroller.contentSize = CGSizeMake(self.view.frame.size.width*viewcount, self.view.frame.size.height);
    [self.view addSubview:scroller];
    scroller.scrollEnabled = YES;
    scroller.showsHorizontalScrollIndicator = YES;
    scroller.pagingEnabled = YES;

    J'ai mis un scroll en horizontal. En gros je crée ici 5 UIImageView (je leur attribut une couleur mais ça pourrait être une image hein) et j'ai activé le système de pagination histoire que ça face pas par pas


     


    Bref c'est cadeau : c'est la première fois que je code un component par code : je suis surpris :o avant tout passé par le storyboard bref.


     


    MAJ : Pour ceux qui râlerait du fait que sur la première vue et la dernière on puisse voir l'application : mettez un backgroundColor par exemple


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