2016-09-23 15 views
7

Tôi có một cảnh trong ứng dụng của mình rằng tôi muốn thực hiện phép toán cơ bản giữa hai thanh trượt và một điều khiển được phân đoạn mà người dùng chọn. Tôi cố gắng để làm toán giữa các biến dưới sự điều khiển phân đoạn, nhưng Xcode là đem lại cho tôi một (!) Trong đó nêuSử dụng Định danh Chưa được Giải quyết với Điều khiển Phân đoạn

Sử dụng định danh chưa được giải quyết "xxxx"

với bất cứ điều gì tôi đang cố gắng biến thêm. Mã của tôi là:

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

Điều tôi đang cố gắng thực hiện là kg x liều/800 tương ứng cho mỗi trường hợp. Tôi không thể tìm thấy giải pháp trực tuyến đầy đủ cho vấn đề về số nhận dạng chưa được giải quyết.

+0

'liều lượng' là một biến cục bộ, chỉ hiển thị trong phạm vi (trong cặp dấu ngoặc ôm) của hành động' dosagedesired'. Để làm cho có thể nhìn thấy trong lớp bạn cần một biến cá thể – vadian

+0

bạn có thể sử dụng 'liều lượng' mà không có cảnh báo hoặc lỗi không? –

+0

Làm cách nào để tạo biến mẫu? Và vâng tôi là Mr.UB, không phải dưới sự kiểm soát phân đoạn – beans217

Trả lời

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

cảm ơn bạn! – beans217

+0

hoạt động hoàn hảo cảm ơn bạn. có một mã nào đó tôi nên nhập vào đây để cho phép "Trả lời Nhãn" để cập nhật khi người dùng thay đổi thanh trượt? – beans217

+1

@ beans217 Thanh trượt của bạn hiện đang hoạt động như thế nào? Là nó không cập nhật giá trị của UILabel, hoặc những gì bạn thực sự cần? Có thể bạn có thể đăng một câu hỏi khác, nếu đó là vấn đề hoàn toàn mới. – pedrouan

1

Bạn nên khai báo các biến kgsdosage bên ngoài của phương pháp bất kỳ tức là ở cấp lớp, cùng với các cửa hàng của bạn

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

Và khi bạn sử dụng kgsdosage bên trong phương pháp của bạn, hãy xóa từ let vì bạn không khai báo biến.

Lý do bạn làm điều này là bạn không thể truy cập các biến được khai báo trong phương thức theo phương pháp khác. Trong phương thức concentrationoption, bạn không thể truy cập dosage, được xác định theo phương thức dosagedesired.

+0

Tuyệt vời, cảm ơn bạn! – beans217

+1

@ beans217 nếu bạn nghĩ câu trả lời của tôi trả lời câu hỏi của bạn, hãy xem xét chấp nhận nó bằng cách nhấp vào dấu kiểm đó – Sweeper

+0

Nó đã làm, tuy nhiên, câu trả lời thứ hai đã giúp tôi chính xác hơn với những gì tôi đã cố gắng đạt được. Cảm ơn bạn cho đầu vào của bạn mặc dù. – beans217

Các vấn đề liên quan