hachinoBlog

hachinobuのエンジニアライフ

UINavigationBarにUIBarButtonItemを複数埋め込む方法

はまった。。
UIViewにUIBarButtonItemをaddSubして、そのViewをNavigationControllerのrightBarButtonItemに
突っ込めば良いと思ってたけど、そもそもUIBarButtonItemはUIViewにaddSubできない。。

色々試したけあげくたどり着いたのはUIToolbarを定義して、そこにUIBarButtonItemを配置後、
UIBarButtonItem *toolbarBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:ツールバー];
上記でようやく解決できた。

ただし、NavigationControllerとUIToolBarは若干UIが違うのでそのままrightBarButtonItemにtoolbarBarButtonItemを
突っ込んでも微妙にズレてしまう。
なのでUIToolbarを継承したクラスを作成してそこで

  • (void)drawRect:(CGRect)rect を空でオーバーライドする。

ここでMyToolbarとして定義したとするとToolbarは下記のように定義する
UIToolbar *toolbar = [[MyToolbar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 130.0f, 44.0f)];

これでようやくできたー!

参考URL
http://d.hatena.ne.jp/KishikawaKatsumi/20110712/1310486398