#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 — обязательно отметьте ответ «Принято» в интересах других пользователей, которые могут столкнуться с вашим вопросом.