beans217 beans217 - 2 months ago 10
iOS Question

Use of Unresolved Identifier with Segmented Control

I have a scene in my app that I want to do basic math between two slider bars and a segmented control that the user picks. I am trying to do the math between variables under the segmented controls, but Xcode is giving me a (!) stating


Use of unresolved identifier "xxxx"


with whatever variable I'm trying to add.
My code is:

import UIKit

class DopamineCalculator: UIViewController {

//slider outlets
@IBOutlet weak var slider: UISlider!
@IBOutlet weak var sliderone: UISlider!
//segmentoutlet
@IBOutlet weak var segmentoutlet: UISegmentedControl!


//LABELS
//weight label
@IBOutlet weak var weightlabel: UILabel!
//dosage label
@IBOutlet weak var dosagemg: UILabel!
//Drip Rate Answer Label
@IBOutlet weak var dripanswer: UILabel!




//ACTIONS!!
//weight slider action
@IBAction func weightslider(sender: UISlider) {

let weight = Int(sender.value)
//converts to kgs
let kgs = Int(sender.value) / Int(2.2)

weightlabel.text = "\(weight) lbs"
}


//Dosage Desired dosage slider

@IBAction func dosagedesired(sender: UISlider) {

let dosage = Int(sender.value)



dosagemg.text = "\(dosage) mg"
}


//CONCENTRATION OPTIONS
@IBAction func concentrationoption(sender: UISegmentedControl) {
switch segmentoutlet.selectedSegmentIndex
{
case 0:


dripanswer.text = (kgs) * (dosage) / 800


case 1:


dripanswer.text = "1600";



case 2:


dripanswer.text = "3200";

default:
break;
}
}


What I am trying to do is kgs x dosage / 800 respectively for each case. I can not find an adequate solution online to the unresolved identifier issue.

Answer
@IBOutlet ...

// Add variables to be reachable for all methods    
var dosage : Int = 0
var kgs : Double = 0.0

@IBAction func dosagedesired(sender: UISlider) {

    // prepend self to variable as it is used
    self.dosage = Int(sender.value)
    dosagemg.text = "\(self.dosage) mg"
    // adding the calculation here
    let result = self.kgs * Double(self.dosage) / 800
    dripanswer.text = "\(result)"
}

@IBAction func weightslider(sender: UISlider) {
    let weight = Int(sender.value)    
    // converts to kgs
    // the same here
    self.kgs = Int(sender.value) / Int(2.2)
    // adding the calculation here
    let result = self.kgs * Double(self.dosage) / 800
    dripanswer.text = "\(result)"
}

@IBAction func concentrationoption(sender: UISegmentedControl) {

    switch segmentoutlet.selectedSegmentIndex
    {
    case 0:
        // the same here
        // you are calculating a double, so both vars have to be double 
        let result = self.kgs * Double(self.dosage) / 800
        dripanswer.text = "\(result)"

    ...
}
Comments