Значение типа ‘SecondViewController’ не имеет члена ‘bmiValue’ Я получаю эту проблему

#ios #swift #xcode

#iOS #swift #xcode

Вопрос:

Я получаю сообщение об ошибке » Значение типа ‘SecondViewController’ не имеет члена ‘bmiValue’ » Я пытаюсь выяснить, что не так с кодом

импорт UIKit

         class ViewController: UIViewController {

        @IBOutlet weak var heightLabel: UILabel!
        @IBOutlet weak var weightLabel: UILabel!
        @IBAction func weightSliderChanged(_ sender: UISlider) {
        weightLabel.text = String(format: "%.0f", sender.value)
        }
        @IBAction func heightSliderChanged(_ sender: UISlider) {
        heightLabel.text = String(format: "%.2f", sender.value)
        }

        @IBAction func calculatePressed(_ sender: UIButton) {
        let weight = weightSliderValue.value
        let height = heightSliderValue.value

        let bmi = weight/pow(height, 2)
        print(bmi)

        let secondVc = SecondViewController() Value of type 'SecondViewController' has no member 'bmiValue'
        secondVc.bmiValue = String(format: ".1f", bmi)

        self.present(secondVc, animated: true, completion: nil)

        }
        @IBOutlet weak var weightSliderValue: UISlider!
        @IBOutlet weak var heightSliderValue: UISlider!
        override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        }


        }
  

вот код для контроллера второго вида, где я хочу отобразить bmi

импорт UIKit

 var bmiValue = 0.0

class SecondViewController : UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let label = UILabel()
        label.text = "Hello"
        label.frame = CGRect(x: 0, y: 0, width: 100, height: 50)
        view.addSubview(label)
        
    }
}
  

Комментарии:

1. Черт возьми, поместите var внутри класса, а не как глобальное значение. Swift 101.

2. @Prettygeek больше похоже на программирование 101

3. Теперь я получаю эту ошибку «Не удается присвоить значение типа ‘String’ типу ‘Double’ «, тогда как я уже пытался изменить значение с плавающей запятой на строку

Ответ №1:

Если вы хотите передать значение в виде строки, устанавливаемый вами параметр / свойство также должен быть строкой:

 class SecondViewController : UIViewController {

    // if you want to pass a string
    var bmiValue: String = "0.0"
    
    override func viewDidLoad() {
        super.viewDidLoad()
        let label = UILabel()
        label.text = "Hello"
        label.frame = CGRect(x: 0, y: 0, width: 100, height: 50)
        view.addSubview(label)
        
    }
}
  

Теперь, в вашем «главном» контроллере представления, вы можете сделать это:

     let secondVc = SecondViewController()
    secondVc.bmiValue = String(format: ".1f", bmi)
    
    self.present(secondVc, animated: true, completion: nil)
  

Комментарии:

1. @glazeboy — обязательно отметьте ответ «Принято» в интересах других пользователей, которые могут столкнуться с вашим вопросом.