LoginSignup
1

More than 5 years have passed since last update.

【Swift】@IBOutlet weak var label: UILabel? ん?

Posted at

ある動画を見ていて、「あれ?こんなことできるの?」と思ったことがあったのでメモします。
(もしかして当たり前でしょうか?だとしたら知らなかった自分は大いに反省します。)

storyboard上に2つのViewControllerを表す画面があり、ソースとしては同じViewControllerクラスを参照します。

1.png

※「次へ」ボタンは次の画面に移動できるようにセグエでつなげているだけなので気にしないでください。

参照するクラスは共通なのですが、

左の画面では 
ViewController1用ラベルを表示したいがViewController2用ラベルはいらない

右の画面では
ViewController2用ラベルを表示したいがViewController1用ラベルはいらない

といった場合に普通に値を設定しようとすると下記のようなエラーになります。

2.png

この場合どうすれば良いのかというと、@IBOutletの変数をOptionalにすれば良いようです。

スクリーンショット 2018-05-19 7.28.01(2).png

こうすると、

Simulator Screen Shot - iPhone X - 2018-05-19 at 07.28.25.png

Simulator Screen Shot - iPhone X - 2018-05-19 at 07.28.30 2.png

のように上手く画面に合わせて表示を切り替えることができました。

あんまりやりすぎると画面それぞれで不要な変数が増えてしまったり、場合分けが出てきてしまうことがあるかもしれませんが、
単純に処理は全く一緒だけれども表示内容が少しだけ違うといった場合に有効なことがあるのかもしれませんね。

Xcodeが自動で生成しているものなので何も考えずに使っていましたが、新しい発見をすることができました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1