Xcode8で、これまでやっていたようにcontrolキー
を押しながらUIButton
などにActionを紐付けると、勝手にxxxWithSender
のような名称と紐付けが行われる上に実際実行してみるとunrecognized selector
を発生させる現象に悩まされました。
なお、onClickWithSenderというメソッドを書いて紐付けると、WithSenderWithSenderとか作られます。
原因
Xcode8で、Use Legacy Swift Language Version
がYES
になっている場合に起こる不具合のようです。
SWIFT_VERSION = 2.3
が指定されているときに発生を確認しています。
詳細な解説については、以下で回答している方がいますのでそちらを参照。
■ Xcode 8 drag and connect @IBAction incorrectly adds “WithSender” on connection inspector IB
解決策
Swift3.0で実装する…のが一番正しいですが、ライブラリの関係などで行えないことも多いと思います。
上記内で書かれているように、右クリック(副ボタンのクリック)からイベントを選択して紐付けを行うと正常に紐付けすることができます。
(見た目上は変わらないんですが。。。)
この場合はボタンなので、Touch Up Inside
を選択
蛇足
不安だったら、もうコードで.addTargetしちゃうのがいいと思います。