OutletとActionのダブルConnectionでエラー – Swift3.0 on Xcode
Xcodeを使って、Swift3.0のコードを書いている時にどハマりした初心者(私)用の備忘録です。開発バリバリの人はきっとこんな簡単な失敗はしないと思います。
コトの発端
Button要素をConnectする際に、controlキーを押下して、ViewControllerにドラッグしました。
その際に出現する選択肢です。「Action」を選ぶべきところを、一度「Outlet」選んでしまいました。
ViewControllerから消して、ActionでConnectし直せばいいや…。これが間違いでした。そのまま、シミュレーターで実行テスト!としてみると画面表示時に・・・
signal SIGABRT
「classAppDelegate: UIResponder, UIApplicationDelegate」という門前払い的エラーを出力している模様。初心者(私)には逃げたくなる最初の壁。なんですか、トランプ大統領はこんなところにも、壁を作ったのですか。無理なら辞めればいいよと優しい声が聞こえてきます。
原因
「Button要素をConnectする際に、「Action」を選ぶべきところを、一度「Outlet」選んでしまった」でした。Connectした要素のヘッダファイルを見てみると「Outlet」が残っているのです。
この状態で「ViewControllerから消して、ActionでConnectした」ために、2つのConnectionがあって、エラーが出力したということでした。
解決策
ConnectしたButton要素のプロパティで「Outlet」を接続解除してあげること。これでシミュレーターを動かして、エラーが出力されなければ解決です。
まとめ
controlキー押下のドラッグによるConnectは便利ですが、不要なConnectionが残ってしまっていないか、確認しましょう。
ちなみに
イチからやり直した際に、複数個目のButton要素接続時にcontrolキー押下のドラッグによるConnectで「Action」を選んだ際にも、Outletが同時に接続されたことがありました。その際にも同様に上記解決策で解決できました。
使用環境
- Mac OSX El Capitan 10.11.6
- Xcode 8.2.1 (8C1002)
コメント