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:#select(forControlEvents:ViewController.switchChanged(_ :)) –

+0

Xcodeは "#"の前に "、"を挿入するように要求します。 –

+0

しかし、 "switchChanged:"が動作しています!ありがとうございました! –

関連する問題