Bouton "retour" bloque si zones de texte vides

Bonjour,

Je rencontre un petit soucis sur mon application codée en swift.
Pour faire simple, j'ai une view qui comporte des zones de texte que l'utilisateur remplit.
Quand il clique sur valider, un calcul se fait et les résultats sont données dans une nouvelle view.

Mon soucis est que dans la première view, si l'utilisateur souhaite faire machine arrière en cliquant sur retour et que les zones de texte ne sont pas remplies, ça ne marche pas.

En pièce jointe, une capture d'écran des views pour mieux situer ainsi qu'une capture d'xCode après plantage.

Merci à vous pour votre aide :)

Mots clés:

Réponses

  • Pour ma part, je ferais un
    if (maString.lenght > 0) ma fonction

    else "veuillez remplir les champs"

  • LarmeLarme Membre
    août 2018 modifié #3

    Il faut être précis.
    Ce n'est pas « ça ne marche pas », c'est « ça crash ».
    Cela crash parce que tu forces unwrap tes optionnels.
    À chaque fois que tu utilises un !, si la valeur est nil (ou non castable dans cette class), cela crashera.

    Tu peux utiliser if let ou guard let,

    Il faudrait que tu rajoute ceci :

    guard let liquideTotalString = mlDeLiquideTotaltext.text, let pourcentageAromeString = pourncetageAromeText.text else { 
        print("ml de liquide total ou pourcentage Arome TextField n'a pas de texte")
        return 
    }
    

    Tu pourrais également rajouter ceci (au cas où on remplisse n'importe quoi dans les champs de textes)

    guard let liquideTotalValue = Double(liquideTotalString), let aromeValue = Double(pourcentageAromeString) else {
        print("liquideTotalString ou pourcentageAromeString n'a pas de pu être transformé en Double")
        return
    }
    
  • Bonjour @Herve merci pour ta réponse.

    Comme je suis débutant j'ai besoin de quelques petites éclaircissements :)

    En écrivant ça, je dis que si les champs sont vides et qu'il clique sur retour, un message demande de remplir les cases ?

  • LarmeLarme Membre
    août 2018 modifié #5

    @Herve a dit :
    Pour ma part, je ferais un
    if (maString.lenght > 0) ma fonction

    else "veuillez remplir les champs"

    C'est une possibilité. Vérifier que le champ est convertible en Double aussi, non ? Mais on parle d'un bouton Retour et pas d'un bouton Valider. Donc pour l'UX, c'est bizarre.
    Par contre, il faudrait le faire ailleurs que dans le prepare(for:sender:), dans le shouldPerformSegue(withIdentifier:sender:) sûrement, ou dans l'appui sur le bouton Valider.

  • Salut @Larme

    Oui ça crash pardon :)
    Merci pour ces infos je vais jeter un oeil à ça ce soir en rentrant du boulo :)

  • mbprotb94mbprotb94 Membre
    août 2018 modifié #7

    Je vais modifier l'emplacement des variables qui doublent les valeurs :) merci
    (je n'ai pas le choix de les doubler car je me retrouve toujours avec des décimales à un moment ou un autre. Si je ne le fais pas, j'ai droit à des erreurs disant que je ne peux pas calculer des chiffres avec des UITextfield)

  • Joanna CarterJoanna Carter Membre, Modérateur
    août 2018 modifié #8

    Côté contrôle de saisie dans les champs, c'est mieux d'empêcher l'utilisateur de saisir les mauvais caractères. Je te conseille de lire les articles sur le sujet en commençant ici.

    En plus, pourquoi tous les segues dans le storyboard ? C'est bien trop compliqué !

    Et, tu ne dois pas empêcher d'appuyer sur le bouton retour. Imagines que l'utilisateur est venu de l'écran précédent et il se dit "je ne voulais pas arriver ici". D'après toi, il faut remplir les champs juste pour annuler sa décision !

    Non. Retour == Annuler

  • Merci @Joanna Carter je vais regarder ça :smile:

  • Oh la vache, le storyboard 🤪

  • Joanna CarterJoanna Carter Membre, Modérateur

    @Jcb84 a dit :
    Oh la vache, le storyboard 🤪

    Comme j'ai déjà dit, c'est un vrai bordel !!! 😩

    J'espère que @mbprotb94 l'a bien changé en même temps que les autres fautes 😜

  • mbprotb94mbprotb94 Membre
    novembre 2018 modifié #12

    Bonjour à tous.
    Suite a de gros soucis, c'est seulement aujourd'hui que je me remets sur cette "application" (oui oui je mets des guillemets hihi) et que je prends connaissance de vos messages.

    Pour résumer, vous trouvez qu'il y a trop de boutons retour ? Le soucis est que pour ces dosages, nous y allons à l'aveuglette jusqu'à trouver un truc adéquat avec ce qu'on souhaite. Je trouve donc plus pratique de retourner sur la page précédente plutôt qu'au menu même si le storyboard est vraiment bordélique.
    Comment feriez-vous ? (je prends tous les conseils)

    @Joanna Carter je ne souhaite pas bloquer le bouton retour au contraire. Ce que tu me dis dans le message #8 c'est de renommer en "annuler" ?

    Une question me vient au passage :
    Est-ce que je dois impérativement afficher mes résultat sur une nouvelle page ou alors je peux les afficher sur la page où l'utilisateur rempli les champs et masquer les champs pour afficher le résultat ? (je me complique un peu, je devrais peut-être laisser les champs de texte et afficher les résultats en dessous...?)

    Merci pour vos réponses.

    Ps : pour rappel, je débute, gare aux termes techniques trop compliqués ;)

  • @mbprotb94 a dit :

    (je me complique un peu, je devrais peut-être laisser les champs de texte et afficher les résultats en dessous...?)

    Pour que l'application soit agréable à utiliser, il est indispensable que l'utilisateur puisse voir en temps réel l'effet des paramètres. Les réglages et le résultat final doivent impérativement se trouver sur le même écran.

  • OK @Draken je vais retoucher ça :)

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