2016-10-22 4 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 : #content (forControlEvents : ViewController.switchChanged (_ :)) –

+0

Xcode에서 "#"앞에 ","를 삽입하도록 요청합니다. –

+0

하지만 "switchChanged :"가 작동합니다! 고맙습니다! –

관련 문제