Rechargement d'une vue avec effacement/ réinitialisation des champs

Hello


 


Je doit recharger ma vue et effacer / réinitialiser mes données.


 


J'ai donc fait cela:



NSString* typeDePriseEnChargeFinanciere = typePecBouton.titleLabel.text;
NSString* precisezDossierSuiviPar = precisionSuiviTexfield.text;


typeDePriseEnChargeFinanciere = @Sélectionnez;
precisezDossierSuiviPar = @"";

[self.view setNeedsDisplay];

Aucun résultat


 


J'ai essayé cela:



NSString* typeDePriseEnChargeFinanciere = typePecBouton.titleLabel.text;
NSString* precisezDossierSuiviPar = precisionSuiviTexfield.text;


typeDePriseEnChargeFinanciere = @Sélectionnez;
precisezDossierSuiviPar = @"";

[self viewDidLoad];

Rien non plus.


 


J'ai toujours mes champs qui sont remplis, et j'ai pas l'impression que ma page se recharge.


 


Pouvez vous m'aider s'il vous plait ?


Réponses

  • AliGatorAliGator Membre, Modérateur
    Tu l'achètes quand, ce bouquin pour apprendre les bases de Cocoa, que je n'arrête pas de te conseiller d'acheter ?
  • Au lieu de faire preuve de cette insolence t'est il possible de me répondre gentiment ?


     


    Sur Internet (sur SO pour être plus précis) est évoqué le viewDidLoad et setNeedsDisplay, mais aucun de ces 2 la ne fonctionnent


  • samirsamir Membre
    novembre 2014 modifié #4

    @Jean75 Je trouve qu'il n'est pas insolent avec toi, au contraire c'est le meilleur conseil. Il a assez d'expérience pour remarquer que tu es entrain de galéjer et de faire n'importe quoi, par exemple invoquer la fonction viewDidLoad soit même, chose qu'il ne faut jamais faire. 


     


    C'est la base tout ça, donc franchement un bon livre te permettra d'avancer et d'avoir toutes les notions de base et bien sur en parallèle tu peux demander des conseils/aide aux membres du forum.


  • AliGatorAliGator Membre, Modérateur
    Eh bien disons que jusqu'à  présent je t'ai conseillé gentiment une bonne voie d'apprentissage à  suivre, car je sais que si tu ne la suis pas tu vas nous bombarder de questions à  chaque petit problème, et je te rappelle que l'objectif des forums n'est pas de te fournir une formation et de te faire un cours complet sur les bases de Cocoa.

    Je te rappelle ce que je t'ai déjà  expliqué plusieurs fois, à  savoir que si tu faisais un petit effort de te former sur les bases avec un bouquin, tu aurais déjà  la réponse à  toutes ces questions que tu as posées depuis le début ; ce n'est pas notre rôle que de te faire des cours et de répéter exactement ce qui est déjà  dit dans ce genre de bouquins, qui expliquent d'ailleurs ces bases bien mieux que nous pourrions le faire ici.

    Là  pour répondre à  ta question correctement, il faudrait t'expliquer le fonctionnement des méthodes de base que sont viewDidLoad, setNeedsDisplay, drawRect, leur lien entre eux (ce qui est expliqué dans la documentation Apple et les Programming Guide, de surcroà®t), les bases de fonctionnement de comment fonctionne la mise à  jour de l'UI d'une appli iOS en général, ... ce n'est pas notre rôle mais celui d'une formation ou d'un bouquin.


    Maintenant, tu sembles t'obstiner à  ne pas écouter mes conseils, et continuer à  nous poser des questions qui nécessiteraient à  chaque fois que l'on t'explique les bases qui seraient pourtant expliquées dans un bouquin ou une formation, plutôt que de prendre en considération mes (nos) conseils et les réponses qui te sont données.Ce n'est pas comme cela qu'un forum fonctionne, et je me demande qui est à  qualifier d'insolent dans ce cas...
  • Samir - invoquer viewDidLoad est une mauvaise solution ? Va donc dire ça ici: http://stackoverflow.com/questions/9686433/reloading-a-viewcontroller


     


    AliGator - Je suis une formation en Licence, et j'ai également 2 bouquins je te ferais remarquer.


    Ne crois pas que je n'ai eu que 4 ou 5 problèmes j'en ai eu bien plus que j'ai su régler par moi même, je ne viens pas demander de l'aide sans avoir cherché avant, je te ferait dire.


    Tu ne veut donc pas répondre ? Soit, mais après faut pas s'étonner de la mauvaise image que donne les français avec une mentalité plus que limite. Vous êtes censés aider les utilisateurs, et non pas à  chaque fois leur dire RTFM. 


  • Joanna CarterJoanna Carter Membre, Modérateur
    Jusqu'à  tu as appris les bases d'un bon bouquin, évites de chercher sur SO. On y trouve pas mal de fausses pistes
  • AliGatorAliGator Membre, Modérateur
    novembre 2014 modifié #8

    Samir - invoquer viewDidLoad est une mauvaise solution ? Va donc dire ça ici: http://stackoverflow.com/questions/9686433/reloading-a-viewcontroller

    Pas besoin d'aller corriger cette réponse sur SO, elle est déjà  bonne, puisqu'elle dit justement explicitement " You really don't need to do: [self.view setNeedsDisplay]; " donc donne déjà  la bonne réponse expliquant qu'il ne faut PAS appeler cette méthode.

    La réponse en question sur SO est correcte, c'est toi qui a sans doute dû la comprendre à  l'envers.
  • Et le 2e message qui préconise d'utiliser viewDidLoad ? Je croyais qu'il ne fallait pas l'utiliser (dixit Samir)


     


    Sinon ça ne règle toujours pas mon problème


  • Joanna CarterJoanna Carter Membre, Modérateur

    Hello

     

    Je doit recharger ma vue et effacer / réinitialiser mes données.

     

    J'ai donc fait cela:

    NSString* typeDePriseEnChargeFinanciere = typePecBouton.titleLabel.text;
    NSString* precisezDossierSuiviPar = precisionSuiviTexfield.text;


    typeDePriseEnChargeFinanciere = @Sélectionnez;
    precisezDossierSuiviPar = @"";



    Demandes-toi, que fait ce code exactement ?
  • AliGatorAliGator Membre, Modérateur

    Tu ne veut donc pas répondre ? Soit, mais après faut pas s'étonner de la mauvaise image que donne les français avec une mentalité plus que limite.

    Je n'ai jamais dit que je ne voulais pas répondre, mais que j'ai déjà  répondu. Regarde un peu mes différentes participations sur le forum ici comme sur la communauté (StackOverflow, CocoaPods, etc) et le support que j'apporte un peu partout sur le net, tu verras que je pense être loin d'avoir une mauvaise image ou faire transparaà®tre une mauvaise mentalité suite au support que je donne un peu partout à  tout le monde.

    Maintenant, si tu ne souhaites pas suivre les conseils que l'on te donne, c'est un autre problème.

    Vous êtes censés aider les utilisateurs

    Je te rappelle que tout le travail de réponses aux questions posées sur les forums est un travail entièrement bénévole, et quand on a l'impression de toujours répondre la même chose à  chaque fois et de réexpliquer les bases et avoir l'impression de faire des cours complets gratos, tu comprendras qu'à  un moment donné ça saoule un peu et ne donne plus trop envie de donner de son temps pour répondre et aider les autres...
  • Bah il met "Sélectionner" comme titre du bouton, et il met rien ("") dans le textfield, c'est ce que je cherche à  faire.


     


    J'ai pourtant pas vu de réponse, et je comprends pas pourquoi tu en as autant après moi ? Tu cherches un bouc émissaire pour te passer les nerfs ? Tu l'a surement déjà  expliqué à  d'autres et plus calmement, alors pourquoi t'énerver sur moi ?


  • Joanna CarterJoanna Carter Membre, Modérateur

    Bah il met "Sélectionner" comme titre du bouton, et il met rien ("") dans le textfield, c'est ce que je cherche à  faire.




    Mais non. Ce que tu fais c'est de, d'abord, prendre l'adresse du texte du textField et, puis, l'écraser en prennant l'adresse d'une autre chaà®ne.
  • En gros si tu veux changer le titre d'un bouton ( ou d'un Label ici )  il faut que ce soit lui que tu modifie non pas un NSString.


     


    En gros ce que tu fais c'est stocker la chaine de caractère qu'il y a dans dans le Label et celle qu'il y a dans le textField.


    Mais une fois stocké, ceux sont  ces mêmes chaines que tu "ré-initialise".


     


    Si tu veux qu'il y est un changement sur la vue, il faut que tu modifie l'attribut de ses éléments même.


     


    Du coup c'est le



    typePecBouton.titleLabel.text

    que tu dois changer et non pas la chaine dans laquelle tu as stocké ta valeur.


     


    En gros ce que tu dois comprendre, c'est que il y a des éléments graphiques ( que tu implémentes grâce à  l'interface builder ou dans le code   ) que tu "lies" au code et que ce sont ceux ci qu'il faut que tu modifies si tu veux qu'il se passe quelque chose à  l'écran.


  • Bon j'ai trouvé comment réinitialiser mon bouton


     


    Je vais essayer MarcoDah, merci pour l'explication...


  • Ca marche merci ;)


  • Joanna CarterJoanna Carter Membre, Modérateur
    Mais as-tu bien compris pourqoui ton code ne marchait pas ?
  • Oui j'ai fait l'erreur de modifier la variable et pas le champ




  • Mais as-tu bien compris pourqoui ton code ne marchait pas ?




    Elle a raison. Même si après avoir posté je remarque que j'utilise beaucoup trop de "en gros".


    J'ai essayé de détailler ma réponse pour que tu comprennes ce que je faisais .


     


    Je pense que ce que sous entendait Aligator ( et il ne s'est pas énervé contre toi, ni ne s'est passé les nerfs ). C'est que l'important quand on pose une question ce n'est pas de résoudre son problème mais de comprendre pourquoi ce que l'on faisait ne marchait pas et ainsi ne plus refaire ce genre d'erreur à  l'avenir.

  • Joanna CarterJoanna Carter Membre, Modérateur

    Oui j'ai fait l'erreur de modifier la variable et pas le champ



    Je n'étais pas enervée de toi, plutôt, il te vaut mieux de devoir trouver les erreurs toi-même que d'avoir les réponses mis sur une assiette ;)


  • Et le 2e message qui préconise d'utiliser viewDidLoad ? Je croyais qu'il ne fallait pas l'utiliser (dixit Samir)




     


    Oui il ne faut pas utiliser viewDidiLoad soit même ( sauf pour appeler la méthode parent "super"), je veux dire par la qu'il ne faut pas écrire une ligne de genre : [self  viewDidiLoad];


    cette méthode est appelée une fois que la vue de UIViewController est chargée en mémoire, c'est un "callback" pour informer que la vue est bien chargée. C'est pareil pour toutes les méthodes relative au cycle de la vue :



    viewDidLoad
    viewWillAppear:
    viewDidAppear:
    ......

    Un passage de documentation sur viwDidLoad :


     


    This method is called after the view controller has loaded its view hierarchy into memory. This method is called regardless of whether the view hierarchy was loaded from a nib file or created programmatically in theloadView method. You usually override this method to perform additional initialization on views that were loaded from nib files.

     



     


     


    Stackoverflow ?


     


    La réponse acceptée est correcte, et il n'a pas cité viewDidLoad dans sa réponse. Il a citée setNeedDisplay (qu'il déconseille d'ailleurs).

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