UITabBarControllerと初期化

ハマったので,メモしておきます。

UITabBarControllerはInterface Builderで設定できますが,この場合,UIViewController(の派生クラス)のinitWithNibName:bundle:は呼ばれず,initWithCoder:が呼ばれます。

ドキュメントにはinitWithNibName:bundle:をオーバーライドしろ,と書いてあるけど,それはコードでUITabBarController/UIViewController(の派生クラス)を構築する場合。

使い方が両方考えられるような場合は,別の初期化メソッドを用意しておいて,initWithCoder:とinitWithNibName:bundle:の両方から呼び出すようにしておいたほうが良いのかも知れません。