[Résolu] Ouvrir une vue refresh à  l'ouverture de l'application : Nécessaire ou suffisant

Am_MeAm_Me Membre
septembre 2014 modifié dans API UIKit #1

Telle est la question ...


 


Voilà  je souhaite en plus de mettre (ou en moins) un bouton refresh dans ma vue principale, de faire un refresh automatique à  l'ouverture de l'application.


 


J'utilise le système des blocs et NSUrlSession en asynchrone donc de ce côté là  (Je remercie d'ailleurs Ali de m'avoir fait découvrir les blocs :P) je n'ai pas de problème je sais quand mon Model a fini de charger les nouvelles données ...


 


Pour le moment j'ai fait en sorte qu'une vue s'affiche quand j'appuie sur le bouton refresh (la vue s'affiche  en général entre 1 seconde voir 10 secondes (estimation) si la connexion est nul ...) puis elle disparait quand les données sont chargés. 


Du coup je voulais savoir comment vous procédiez : suis-je sur la bonne voie de la "logique" iOS, la logique de la simplicité ?


 


_______


 


Et donc ma seconde partie est comment vous faites ? Voilà  ma logique : 


 


L'utilisateur ouvre l'application (elle était n'était plus dans le mulitache ==> utilisateur l'a supprimé ) j'affiche la refreshView. Pour ce cas là  comment vous vous débrouillez pour savoir qu'il faut afficher qu'une seule fois la vue dans le viewDidLoad et pas à  chaque fois que l'utilisateur navigue ou quand il revient dessus : alors qu'elle était déjà  dans le multitâche ... ? NUSerDefault ? 


 


Car moi je voudrais que ça ne le face que quand elle n'était plus dans le multitâche et qu'il vient de l'ouvrir : du coup je dois utiliser quelle méthodes des deux ? 


 


applicationWillResignActive



applicationWillResignActive

applicationWillTerminate

Réponses

  • Ta question m'étonne un peu. Pourquoi n'utilises-tu pas la méthode "ViewDidLoad" pour rafraichir ta vue à  l'ouverture. Apparemment, tu as déjà  une fonction qui répond au bouton "Refresh" pour visualiser tes données (??), tu peux appeler cette méthode depuis "ViewDidLoad" aussi.


     


    Je ne comprends rien à  la seconde partie de ta question! Perso (mais je ne travaille que sur iPad), je n'ai jamais surclassé les méthodes "applicationWillResignActive" et "applicationWillTerminate".  Si tu travailles avec plusieurs vues, il te faut de toute façon sauvegarder tes données dans une classe à  part partagée par toute l'application (voir la discussion sur "sharedSession" dans ce forum) puisque la ViewController est détruite par le ramasse-miette dès que l'on change de fenêtre.


  • Am_MeAm_Me Membre
    septembre 2014 modifié #3

    Ca c'est bon j'ai un singleton.


     


    Bah j'ai pensé à  la mettre dans viewDidLoad : mais n'est-il pas nécessaire de signaler à  l'utilisateur que c'est en train de refresh ?


    Au pire j'affiche la roue qui tourne (je ne sais plus comment on l'appel) en haut de l'écran au niveau de la barre de notif


  • Am_MeAm_Me Membre
    septembre 2014 modifié #4

    Pour le moment j'ai opté pour le cas simple : je pense que tu as raison pas besoin d'afficher de vue.


     


    Normalement ma requête se fait dans mon [Model sharedModel] et s'effectue sur un objet [[Singleton sharedSingleton] getListeAMettreAJour] bref normalement tout marche en background enfin je crois. Même si l'objet ViewController est "released"



    UIApplication* app = [UIApplication sharedApplication];
    app.networkActivityIndicatorVisible = YES;


    Et viewDidLoad n'est appelé qu'une fois ? Car j'utilise juste des transition modal. viewDidLoad n'est appelé qu'à  l'ouverture et pas à  la transition entre chaque vue donc ?


  • Yep pour appeler la méthode à  la transition entre chaque vue, il faut utiliser viewWillAppear. Le viewDidLoad ne s'exécute qu'au premier chargement de la vue.
  • Oui merci j'avais oublié de mettre ça en Résolu :/


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