Macアプリを作ってて、XIBからNSViewを生成したいだけだったのになかなか面倒だったので簡単にできる奴を作った。 似たようなものはありそうなのに、探してみたら意外とちゃんと使える奴が少なかった。
自分で定義したCustomViewクラスとCustomView.xib
を作っておけば、以下のようにするだけで簡単にViewが生成できる。
Genericsを使っているのでカスタムビューのクラスで取得できる。
let customView: CustomView = try! CustomView.view(withOwner: self) customView.label.text = "Hello World" self.view.addSubView(customView)
UIKitにもCocoaにも対応しているので、UIViewでもNSViewでも同じように使える。ついでにtvOSでも使える。
クラスを作るまでもなく、ただUIViewのXIBを読みたいだけという用途の場合、自分でファイル名も指定できる。
let customView: UIView = try! UIView.view( fromNibNamed: "MyCustomView", owner: self, bundle: NSBundle(forClass: self.dynamicType) )
気合入れて大きなライブラリを作らなくても、こういうスニペットレベルのものの方がむしろ汎用性が高くてよさそう。
知見
本当に小さいライブラリだし、Swiftライブラリ作成の知見は前回書いてしまったので、他に特に書くことはない。
一つ言えることは、最初はNibLoader
というライブラリ名だったんだけど、CocoaPodsに既に同名のライブラリがホストされてて、完成段階になって泣きながら名前を変えるハメになって大変面倒だったので、作り始める前は下調べをするべき。