SwiftのaddSubViewの概念からUIButtonが動かない原因を解決する


詰まったのでメモ

storyboard上にUIButtonを配置した。

ビルドしたら成功してシュミレーターは動く。

iPhone画面は表示される。

なのにボタン押しても反応しない。

ボタン押しても遷移しない。

こういう場合

qiita.rb
 addsubview

の設定がおかしい場合があります。

例えばViewの上にUIButtonを配置したら、その時点でUIButtonはaddsubviewです。

コードで書くと以下のようになります。

qiita.rb
 self.view.addSubview(UIButton)

これは

qiita.rb
 self

で自分を呼び出してviewの中に

qiita.rb
 addSubview(UIButton)

qiita.rb
 add(追加)

するという意味。Viewの中にbuttonを追加するよという意味

qiita.rb
 self.view.addSubview(UIButton)

そして、butoonが動かない原因の一つとして考えられるのが

qiita.rb
 他のUIの制約の下にUIbuttonとかが隠れてる

この可能性あります。自分はありました。

ViewからViewへ遷移するシチュエーションを考えると理解しやすいのですが

showで画面を遷移する時、画面Aという折り紙の上に画面Bという折り紙が重なるイメージができます

画面Bという折り紙が画面Aをかぶってる以上画面Aはそうさできません

今、storyboard上のUIがどういう配置をしてるのか。

よくよく見ていると、ボタンが動作しない理由がわかったりします。