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

  • HerveHerve Membre

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

    else "veuillez remplir les champs"

  • LarmeLarme Membre
    7 août 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
    7 août 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
    7 août 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
    7 août 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

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