2016-09-23 16 views
7

Uygulamamda, iki kaydırıcı çubuğu ve kullanıcının seçtiği bölümlü bir denetim arasında temel matematik yapmak istediğim bir sahne var. Ben segmentli kontroller altında değişkenler arasındaki matematik yapmak çalışıyorum, ancak Xcode bana veriyor bir (!) Çözülmemiş tanımlayıcıBölünmüş Denetime Sahip Çözülemeyen Tanımlayıcı Kullanımı

kullanın belirten deniyorum herhangi bir değişkeni ile

"xxxx" eklemek. Kodum: Ben yapmaya çalışıyorum ne

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; 
    } 
} 

her vaka için ayrı ayrı kg x dozaj/800 olduğunu. Çözümlenmemiş tanımlayıcı sorununa çevrimiçi olarak uygun bir çözüm bulamıyorum.

+0

'dosage', 'dozajlanan' eyleminin yalnızca kapsamı (parantez çiftinin içerisinde) tarafından görülebilen yerel bir değişkendir. Sınıfta görünür yapmak için – vadian

+0

örnek değişkenine ihtiyacınız var uyarı veya hata olmadan 'dozajı 'kullanabiliyor musunuz? –

+0

Bir örnek değişkeni nasıl oluştururum? Ve evet ben Mr.UB'um, sadece bölümlere ayrılmış kontrol altında değil – beans217

cevap

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)"    
} 
+0

teşekkürler! – beans217

+0

kusursuz çalışıyor. Kullanıcıyı sliderbar değiştirdikçe "Cevap Etiketi" nin güncellenmesi için buraya girmem gereken belirli bir kod var mı? – beans217

+1

@ beans217 Kaydırıcınız şu anda çalışıyor mu? UILabel değerini güncellemiyor mu, yoksa gerçekten neye ihtiyacınız var? Tamamen yeni bir sorun varsa, belki başka bir soru gönderebilirsiniz. – pedrouan

1

kelimesini kaldırmak için çıkışları senin yöntemleri içinde

//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 

Ve kullanma kgs ve dosage birlikte değişkenleri kgs ve sınıf düzeyinde yani herhangi yöntemin dosage dışında ilan etmeli let çünkü bir değişken bildirmiyorsunuz.

Yapmanızın nedeni, başka bir yöntemde bir yöntemde bildirilen değişkenlere erişememenizdir. concentrationoption yönteminde, dosagedesired yönteminde tanımlanan dosage erişemezsiniz.

+0

Tamam, teşekkürler! – beans217

+1

@ beans217 cevabın sorunuzu yanıtladığını düşünüyorsanız, lütfen bu onay işaretini tıklatarak kabul etmeyi düşünün – Sweeper

+0

Ancak, ikinci cevap elde etmeye çalıştığım şeyle daha net bir şekilde yardımcı oldu. Yine de girişiniz için teşekkür ederiz. – beans217