Partage
  • Partager sur Facebook
  • Partager sur Twitter

[iOS] start/stop/reset dans une app

    29 mars 2013 à 22:01:34

    Bonjour.

    Je m'appelle Paul Theron et j'ai crée une app qui s'appelle "MySpeed". Actuellement je travaille sur la quatrième version et j'aimerais ajouter trois boutons, l'un permettant de commencer le calcul de la vitesse et de la distance, le second permettant d'arrêter et le troisième permettant de réinitialiser le calcul. Mais je ne sais pas comment faire tout ça. Est-ce que quelqu'un pourrait m'aider s'il vous plaît?

    • Partager sur Facebook
    • Partager sur Twitter
      30 mars 2013 à 16:16:01

      C'est quoi le problème ? Faire trois bouton?
      • Partager sur Facebook
      • Partager sur Twitter
        31 mars 2013 à 8:28:54

        Bonjour Holosmos. Je suis content que vous ayez répondu à mon message.

        Non le problème n'est pas d'ajouter les trois boutons, ça c'est facile à faire. Le problème est de faire en sorte que lorsque et seulement lorsque j'appuie sur le bouton "start" le calcule de la vitesse, de la distance, de l'altitude et du temps que je mets pour parcourir une distance démarre. Par la même occasion de faire en sorte que lorsque j'appuie sur le bouton "stop" tout s'arrête et lorsque j'appuie sur le bouton "reset" les valeurs s'effacent.

        J'espère avoir été clair.

        Paul Theron

        • Partager sur Facebook
        • Partager sur Twitter
          31 mars 2013 à 12:20:27

          Ok je vois plus le problème ;)

          Est-ce que vous avez déjà fait ces fonctions qui correspondent à ce que vous me dîtes? (calcul de la vitesse, ...) Si oui est-ce que le problème si situe dans le fait d'associer cette fonction à l'action de l'utilisateur ? Est-ce que le problème est que vous avez ces fonctions mais vous ne savez pas comment les faire agir entre-elles?

          • Partager sur Facebook
          • Partager sur Twitter
            31 mars 2013 à 17:56:16

            Voilà c'est à peu près ça. En fait le calcule de la vitesse, de la distance et de l'altitude se fait automatiquement au lancement de l'application et moi je voudrais qu'il se fasse lorsque je clique sur le bouton "start".
            • Partager sur Facebook
            • Partager sur Twitter
              31 mars 2013 à 18:38:45

              Il suffit de récupérer ce qui se passe au début (une fonction déjà faite certainement) et la réinsérer dans votre méthode correspondant à l'action
              • Partager sur Facebook
              • Partager sur Twitter
                31 mars 2013 à 19:20:48

                C'est ce que j'ai fait. Dans la méthode correspondant au bouton "start" j'ai écrit que le label concerné devait afficher ma vitesse mais après avoir lancé l'application lorsque je clique sur le bouton l'application plante. Et en plus de tout ça je n'ai pas la moindre idée de comment faire en sorte que tout s'arrête lorsque je clique sur le bouton "stop" et que tout se remette à zéro lorsque j'appuie sur le bouton "reset".
                • Partager sur Facebook
                • Partager sur Twitter
                  31 mars 2013 à 19:46:00

                  Montrez moi votre code, sans ce dernier impossible de dire ce qui ne va pas
                  • Partager sur Facebook
                  • Partager sur Twitter
                    31 mars 2013 à 19:58:49

                    Très bien je vous l'envoi de suite.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      31 mars 2013 à 20:17:38

                      - (void)commencer:(id)sender {

                      }

                      - (void)arreter:(id)sender {

                      }

                      - (void)recommencer:(id)sender {

                      }

                      - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

                          if (newLocation.speed >= 0.0) {

                              vitesseString1 = [NSString stringWithFormat:@"%0.1f", newLocation.speed];

                      vitesse.text = vitesseString1;

                              vitesseString2 = [NSString stringWithFormat:@"%0.1f", (newLocation.speed * 3.6)];

                      vitesse2.text = vitesseString2;

                          }

                          altitudeString = [NSString stringWithFormat:@"%0.0f", newLocation.altitude];

                      altitude2.text = altitudeString;

                          if (startLocation == nil) {

                              self.startLocation = newLocation;

                          }

                          CLLocationDistance distanceBetween = [newLocation distanceFromLocation:startLocation];

                          distanceString = [NSString stringWithFormat:@"%f", distanceBetween];

                      distance2.text = distanceString;

                      }

                      Et voilà le code.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        31 mars 2013 à 20:22:33

                        Qu'est-ce que vous avez mis dans [self commencer] ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          31 mars 2013 à 21:44:57

                          Je ne vois pas très bien de quel partie vous parler. Où doit se trouver [self commencer]?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 avril 2013 à 16:30:24

                            Dans votre viewController vous avez une méthode (que vous avez apporté avec le code) qui se nomme commencer. Dans le code ici présent on ne voit pas ce que vous avez essayé de faire, ce serai pourtant bien de voir ça :)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              1 avril 2013 à 16:57:46

                              La méthode "commencer" est vide là.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                1 avril 2013 à 17:15:23

                                PauloLePro a écrit:

                                C'est ce que j'ai fait. Dans la méthode correspondant au bouton "start" j'ai écrit que le label concerné devait afficher ma vitesse mais après avoir lancé l'application lorsque je clique sur le bouton l'application plante. 


                                C'est ce que je veux voir ;)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  1 avril 2013 à 17:31:46

                                  Ah excusez-moi je n'avais pas compris. En fait là elle est vide parce qu'en voyant que ça ne fonctionnait pas j'ai supprimé ce que j'avais mis dans la méthode. Je vous renvoie le tout.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    1 avril 2013 à 17:39:16

                                    - (void)commencer:(id)sender {

                                    vitesse.text = vitesseString1;

                                    vitesse2.text = vitesseString2;

                                    }

                                    - (void)arreter:(id)sender {

                                    }

                                    - (void)recommencer:(id)sender {

                                    }

                                    - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

                                        if (newLocation.speed >= 0.0) {

                                            vitesseString1 = [NSString stringWithFormat:@"%0.1f", newLocation.speed];

                                    //vitesse.text = vitesseString1;

                                            vitesseString2 = [NSString stringWithFormat:@"%0.1f", (newLocation.speed * 3.6)];

                                    //vitesse2.text = vitesseString2;

                                        }

                                        altitudeString = [NSString stringWithFormat:@"%0.0f", newLocation.altitude];

                                    altitude2.text = altitudeString;

                                        if (startLocation == nil) {

                                            self.startLocation = newLocation;

                                        }

                                        CLLocationDistance distanceBetween = [newLocation distanceFromLocation:startLocation];

                                        distanceString = [NSString stringWithFormat:@"%f", distanceBetween];

                                    distance2.text = distanceString;

                                    }

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      1 avril 2013 à 17:54:15

                                      locationManager se déclanche quand? Uniquement au lancement de l'application ? On peut pas le déclancher autrement?
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        1 avril 2013 à 18:08:02

                                        Oui il se déclenche au lancement de l'application.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          1 avril 2013 à 18:50:04

                                          Pas moyen de le déclencher autrement?
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            1 avril 2013 à 19:08:07

                                            Bonjour,

                                            - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

                                            Cette fonction est appelée pour chaque nouvelles coordonnées générées par le core location.

                                            C'est en fait un délégué de la classe CLLocationManager.

                                            Voici comment comment en contrôler les appels : 

                                            CLLocationManager *myManager = [[CLLocationManager alloc]init];
                                                
                                                [myManager startUpdatingLocation]; // Lance la géolocalisation
                                                [myManager stopUpdatingLocation]; // Stop la géolocalisation



                                            -
                                            Edité par mout@rde 1 avril 2013 à 19:09:37

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              1 avril 2013 à 19:16:48

                                              Pour Holosmos:

                                              Si je pense qu'il y a un autre moyen de le déclencher autrement mais je ne vois pas comment.

                                              Pour mout@rde:

                                              Bonjour.

                                              Je n'arrive pas à faire le lien entre le code que vous m'avez donné et le fait qu'en cliquant sur les deux boutons "start" et "stop" les fonctions vont s'exécuter.  

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                1 avril 2013 à 19:17:50

                                                mout@rde a écrit:

                                                CLLocationManager *myManager = [[CLLocationManager alloc]init];
                                                    
                                                    [myManager startUpdatingLocation]; // Lance la géolocalisation
                                                    [myManager stopUpdatingLocation]; // Stop la géolocalisation

                                                Suffit de mettre ça dans vos méthodes ;) start dans le start, stop dans le stop, et le reset c'est juste la valeur du label qu'il faut remettre à 0
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  1 avril 2013 à 19:29:30

                                                  Je viens de trouver comment faire, lorsque je clique sur "stop" le calcule s'arrête et lorsque je clique sur "start" il continue par contre le calcule de la vitesse se fait toujours au lancement de l'application.
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    1 avril 2013 à 19:36:29

                                                    Oui je viens de trouver comment faire mais il y a juste un petit problème. Le calcule commence dès l'ouverture de l'application.
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      1 avril 2013 à 19:38:18

                                                      Il faut alors mettre un stop dans le viewWillLoad
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        1 avril 2013 à 19:51:45

                                                        C'est bon, mon application fonctionne comme je le voulais grâce à vous. Merci beaucoup Holosmos pour toutes vos explications claires et pour votre patience et merci beaucoup à vous mout@rde pour votre explication. J'essaierai de vous prévenir lorsque la 4° version de mon app sera en ligne.
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          1 avril 2013 à 19:53:02

                                                          Des petits +1 là où on a été utiles, signaler que le problème est résolu et le sujet et clos :)
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            1 avril 2013 à 22:08:57

                                                            D'accord, comme ça je m'en souviendrai.
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            [iOS] start/stop/reset dans une app

                                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                            • Editeur
                                                            • Markdown