Besoin d'effectuer calcul incluant un UITextfield = bloqué depuis des jours

Bonjour,
Je développe actuellement ma première application iOS.
2 views :
la première récolte 3 données en chiffres que donne l'utilisateur
la deuxième affiche 3 résultats
Entre les deux il y a 3 calculs sensés être simples qui récupèrent les données (UITextfield) de la première vue.

MON SOUCIS :
Il y a toujours un bloquage car on ne peux pas mélanger des Int avec des UITextfield ou alors des doubles avec des Int ou encore :

Cannot invoke initializer for type 'Double' with an argument list of type '(UITextField)'

J'ai bien entendu retourné le web avant de venir poster ce message... (après, étant débutant, j'ai peut-être mal écrit quelque chose dans le code...)

Bref, impossible de convertir correctement les UITextfield.

Auriez-vous une solution simple et efficace ?

Réponses

  • Voici à quoi ressemble le code.
    Je dois remplir les 3 variables encadrées.

  • DrakenDraken Membre
    1 août modifié #3

    Pourquoi utiliser des UITextView pour récupérer tes chiffres ? Un UIPickerView est plus approprié.

    Quelle est l'espace de valeur de tes 3 valeurs ? Peux-nous donner un exemple de données valides, pour voir à quoi cela correspond ?


    Pour faire des calculs entre un Double et un Int, il faut convertir le Int en Double. Exemple :

            let valeurInt = 23
            let valeurDouble = 54.897
    
            // Addition d'un Double et d'un Int
            // Le Int doit être convertit en Double pour faire le calcul
            let calculDouble = valeurDouble + Double(valeurInt)
            print ("Addition Double + Int : ", calculDouble)
    
  • DrakenDraken Membre

    Autre possibilité : Des UISliders, encore plus simple. L'utilisateur peut même faire varier les données en temps réel, pour voir les résultats.

  • Salut @Draken !
    Alors j'ai réussi entre temps à effectuer mon calcul tout simplement déclarant mes UITextfield en tant que Double.
    J'avais pourtant déjà essayé et ça ne marchait pas...Bref...

    En gros, mon application doit recréer ce petit calculateur (utilise celui de gauche pas celui de droite)

    Intéressant quand même ta réponse, je vais voir un peu ce que c'est UIPickerView ;)

  • DrakenDraken Membre

    Si le taux de nicotine ne peut prendre que 6 valeurs différentes, le PickerView est particulièrement adapté. Ou alors un segmented Control.

    La base nicotine doit varier de quelle valeur à quelle valeur ? Et avec quel incrément ?

  • DrakenDraken Membre
    1 août modifié #7

    Un PickerView c'est un truc comme ça :

    Cela permet de faire un choix parmi une liste de possibilités.

    Je te tape un petit exemple demain, avec un Slider pour la base nicotiné, et un PickerView pour le taux de nicotine.

  • Génial ce truc.
    C'est ça qu'il me faut alors pour la nicotine avec les choix :
    0mg
    3mg
    6mg
    9mg
    12mg
    16mg
    18mg
    20mg

  • DrakenDraken Membre
    2 août modifié #9

       //
        //  ViewController.swift
        //  Sélection Dosage
        //
        //  Created by Patrick Leclercq on 01/08/2018.
        //  Copyright © 2018 patrick leclercq. All rights reserved.
        //
    
        import UIKit
    
        class ViewController:   UIViewController,
                                UIPickerViewDelegate,
                                UIPickerViewDataSource
        {
    
            // Outlet vers le pickerView
            @IBOutlet weak var pickerView: UIPickerView!
    
            // Déclarations des éléments du PickView
            let dataSourcePickerView = [
                "0 mg/ml",
                "3 mg/ml",
                "6 mg/ml",
                "9 mg/ml",
                "12 mg/ml",
                "16 mg/ml",
                "18 mg/ml",
                "20 mg/ml"]
    
            // Stockage des dosages (sous forme de Double)
            let listeDesDosages = [0.0, 3.0, 6.0, 9.0, 12.0, 16.0, 18.0, 20.0]
    
            // Mémorisation du dosage (0 par défaut)
            var dosageCourant = 0.0
    
            // Initialisation du ViewControler
            override func viewDidLoad() {
                super.viewDidLoad()
    
                pickerView.delegate = self
                pickerView.dataSource = self
    
            }
    
            // Déclaration du nombre de colonnes du PicekView (1 seule)
            func numberOfComponents(in pickerView: UIPickerView) -> Int {
                return 1
            }
    
            // Déclaration du nombre d'éléments dans le PickerView
            func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
                return dataSourcePickerView.count
            }
    
            // Initialisation de chaque élément du PickerView
            func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
                return dataSourcePickerView[row]
            }
    
            // Cette méthode est appelée quand l'utilisateur
            // sélectionne une valeur dans le PickerView
            func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    
                // Lecture selection
                let selection = row
                dosageCourant = listeDesDosages[selection]
                print ("Dosage sélectionnée : ", dosageCourant)
    
            }
    
    
        }
    
  • Coucou
    Entre temps j'ai réussi à faire le Pickerview que je voulais poster ici mais je viens de voir que ça n'avait pas validé.
    Merci pour ton exemple je le comprends mieux maintenant avec tes explications :)

    Je vais le refaire proprement,
    Merci, vraiment !

  • DrakenDraken Membre

    Ensuite, ajoute un Slider pour la valeur de la base nicotiné.

        // Evénement indiquant que la valeur
        // du Slider a été modifiée
        @IBAction func actionSlider(_ sender: UISlider) {
            let baseNicotine = sender.value
            print ("Base Nicotiné : ", baseNicotine)
        }
    
  • Trop cool ce truc :)
    Dès que tout ça est prêt je te montre en vidéo :)

  • @mbprotb94 a dit :
    .... déclarant mes UITextfield en tant que Double.

    J'ai raté quelque chose ?

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