2016-10-22 18 views
-1

Мой код не работает. Я не знаю почему. Проблема заключается в свойстве функции switchChanged. Если свойство пусто, тогда код работает.Как правильно использовать UISwitch?

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    let rect = CGRectMake(130, 100, 0, 0) 
    let uiSwitch = UISwitch(frame: rect) 
    uiSwitch.setOn(true, animated: true) 
    uiSwitch.addTarget(self, action: "switchChanged", forControlEvents: UIControlEvents.ValueChanged) 

    self.view.addSubview(uiSwitch) 
} 

func switchChanged(uiSwitch: UISwitch) { 
    var message = "Turn on the switch" 
    if uiSwitch.on { 
     message = "Turn off the switch" 
    } else { 
     message = "Turn on the switch" 
    } 
    let alert = UIAlertController(title: "Information", message: message, preferredStyle: UIAlertControllerStyle.Alert) 
    let action = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil) 
    alert.addAction(action) 
    self.presentViewController(alert, animated: true, completion: nil) 
} 

Ошибка: «LibC++ abi.dylib: оканчивающиеся неперехваченного исключением типа NSException»

+0

Вы уже указали свое использование Swift в тегах, нет необходимости добавлять его в заголовок. –

ответ

3

"switchChanged" не правильное имя селектора, то следует использовать "switchChanged:" для учета параметра. switchChanged - это метод без параметров.

Кроме того, в Swift вы должны использовать вместо этого #selector(switchChanged(_:)). Это подтвердит существование селекторов во время компиляции.

+0

uiSwitch.addTarget (self, action: #selector (ViewController.switchChanged (_ :)), forControlEvents: UIControlEvents.ValueChanged) –

+0

Xcode попросит меня вставить «,» перед «#». –

+0

Но «switchChanged:» работает! Спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^