
【徒然iOS】気ままにUIKit7〜コネクションインスペクタ〜
概要
このマガジンは四十を過ぎたおっさんが、
を参考にStoryboardでiOSアプリを完全に趣味で楽しんでいるだけ
今回
をやってくよ〜〜〜〜〜!
前準備
念の為、バックアップ
新しいクラス
ビューコントローラの追加
イニシャルビューの変更
をいつも通りやる。

本題
まずは、ラベルとボタンを追加して、接続してく

と思ったら、
今回はどうやらAnyでボタンアクションはしないといけないっぽいから、もう一個ボタンを追加

今のところのコードはこんな感じ
class ConnectionInspectorViewContoroller: UIViewController {
@IBOutlet weak var connectionTestLabel: UILabel!
//下のボタン
@IBAction func connectionTestAnyButton(_ sender: Any) {
}
//上のボタン
@IBAction func connectionTest1TouchupButton(_ sender: UIButton) {
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
と、ここで超重要ポイント
接続で結構大事なことを書いてるから、抜粋。
今までのところで何となく感覚は掴んでるとは思うけど、、、
@IBOutlet : 部品に接続しているプロパティ
(要は、対象部品の状態
👉ないと何らかの処理をメソッドでしても状態が変化しない)
@IBAction : 部品と接続して呼び出されるメソッド
(要は、対象部品で行う処理
👉処理がないとただ部品を並べただけで押しても何も変化しない)
てイメージかな、個人的に。
次に、接続方法をコネクションインスペクタで確認


どちらもTouchUpで接続したからそうなってるね👀
で、接続方法を修正したい場合に、今回は下のボタンを修正してみる



でコードに処理を追加してみて
class ConnectionInspectorViewContoroller: UIViewController {
@IBOutlet weak var connectionTestLabel: UILabel!
//下のボタン
@IBAction func connectionTestAnyButton(_ sender: Any) {
connectionTestLabel.text = "タッチダウン"
}
//上のボタン
@IBAction func connectionTest1TouchupButton(_ sender: UIButton) {
connectionTestLabel.text = "タッチアップ"
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
シミュレータで実行してみると、、、

と記事のまとめにも、
「
イベントメソッドを修正するときに注意すべきこと
コネクションを確立したプロパティやメソッドを削除するときは、
コネクションインスペクタからもコネクションを削除しなければ実行時エラーの発生原因になる
ので注意が必要だ。
」
て書いてるとおりで、これを知らないと部品から削除して、コネクションが残ったまんまだからエラーが発生するってことは最初のうちはよくやる
👉まあ、だから実は前処理でバックアップを取っておこうねって癖づけを促してるんだけど、、、💦昔よくやってたからね〜〜〜
まとめ
この記事は短いけど、大事なポイントが2つ
⒈接続方法の違い
⒉コネクションの残存がバグの原因
も書いてるから注意してねえ〜〜〜
しっかし、、、
ここではAnyとUIButtonの違いが出なかったな💦
一応、個人的にも忘れていたので、気になった人は、下のリンクとか参考にしてみてね🕺
以上です!