UIToolbar
を xib化することはあまりないかと思いますが、今回自分でやったときにハマった点があったので共有です。
問題
UIToolbar
を使うとき、状況によって配置するUIBarButtonItem
を変えたいことがあると思います。
UIToolbar
もItem
もStoryboard
で作成した場合は問題ありませんが、xib上でUIToolbar
と後から使うItem
を用意するといった条件下では、いざItem
の変更をしようとしたとき、xib
ロード時に表示されていないItem
は保持されていないため、アクセスできなくなってしまいます。
コードで追加すれば問題ないと思いますが、せっかくxib化しているので、Item
もIBOutlet
として扱いたいです。
対策
通常weak
で宣言するIBOutlet
をstrong
で宣言します。
これでxib
からinstantiateWithOwner
した段階で、すべてのパーツがロードされ、しかも最初にUIToolbar
に配置されていないItem
もアクセスして配置することができるようになります。
パーツはViewController
にstrong参照されているわけではないので、UIToolbar
が不要になった時点で一緒に廃棄されます。
以上、UIToolbar
をxib化するときのTipsでした。