我的应用程序中有一个场景,我想在两个滑块和用户选择的分段控件之间进行基本数学运算。我试图在分段控件下进行变量之间的数学运算,但是Xcode给了我一个(!)说明
使用未解析的标识符" xxxx"
我想要添加的任何变量。 我的代码是:
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;
}
}
我想做的是每种情况分别为kgs x剂量/ 800。我无法在线找到适合未解决的标识符问题的解决方案。
答案 0 :(得分:2)
@IBOutlet ...
// Add variables to be reachable for all methods
var dosage : Int = 0
var kgs : Double = 0.0
var divisor : Double = 800.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) / self.divisor
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) / self.divisor
dripanswer.text = "\(result)"
}
@IBAction func concentrationoption(sender: UISegmentedControl) {
switch segmentoutlet.selectedSegmentIndex
{
case 0:
self.divisor = 800.0
case 1:
self.divisor = 1600.0
case 2:
self.divisor = 3200.0
default:
self.divisor = 800.0
}
// finally the calculation
let result = self.kgs * Double(self.dosage) / self.divisor
dripanswer.text = "\(result)"
}
答案 1 :(得分:1)
您应该在任何方法之外声明变量kgs
和dosage
,即在班级,以及您的网点
//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!
// You should declare the variables here:
var kgs = 0
var dosage = 0
当您在方法中使用kgs
和dosage
时,请删除单词let
,因为您未声明变量。
这样做的原因是您无法在另一种方法中访问方法中声明的变量。在concentrationoption
方法中,您无法访问dosage
方法中定义的dosagedesired
。