Использование локальной переменной 'SwtchChange (Parametr :)' перед ее объявлением
Вы получаете эту ошибку, потому что у вас есть метод, встроенный в другой метод после его вызова (viewDidLoad
, вероятно)
override func viewDidLoad() {
super.viewDidLoad()
...
mySwitch.addTarget(mySwitch, action: #selector(SwtchChange(Parametr:)), for: .valueChanged)
func SwtchChange(Parametr: UISwitch) {
if mySwitch.isOn {
print ("Yeah")
} else {
print ("Nope")
}
}
}
Не делайте этого, ваш целевой метод должен быть объявлен в глобальной области видимости вашего контроллера представления, и, поскольку вы используете Selector
, вы должны пометить свой метод как @objc
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
...
mySwitch.addTarget(self, action: #selector(switchChanged(parameter:)), for: .valueChanged)
}
@objc func switchChanged(parameter: UISwitch) {
if mySwitch.isOn {
print("Yeah")
} else {
print("Nope")
}
}
}
... также обратите внимание, что имена переменных / методов должны начинаться с маленькой заглавной буквы и имен типов с большими заглавная буква