ホーム > 開発 > UINavigationControllerのUIToolbarサポート

UINavigationControllerのUIToolbarサポート

iPhone 3.0になって、UINavigationControllerがUIToolbarを管理してくれるようになりました。UIToolbarを自前で管理しようとすると、UIViewControllerの管理するviewを階層化する必要があったり、その影響でUITableViewControllerが使えなくなったりと面倒な事が多かったのですが、UINavigationControllerに任せるとかなり楽になります。
具体的には、次のような事をやってくれます。

  • UINavigationBarのように、UIToolbarをUIViewControllerの管理するviewの外側で管理してくれる
    viewの階層構造が複雑化しませんし、UITableViewControllerも使えます。
  • UINavigationBarのように、UIToolbarに含まれるUIBarButtonItemをUIViewControllerの遷移に合わせて自動的に交換してくれる

概ね、UINavigationBarサポートと同等という事になります。

所がInterface BuilderでUINavigationControllerにUIToolbarを設置しようとすると、思ったように行かなかったりします。

UIBarButtonItemが設置できないように見える

Interface BuilderでUIBarButtonItemをUINavigationControllerのviewのツールバー部分にドラッグしても、ツールバー上に挿入ポイントが表示されません。しかし、そのままドロップすれば普通に挿入可能です。UIViewに自分で設置したUIToolBarの場合は挿入ポイントが表示されるので、挿入不能と勘違いしてしまいそうです。
あるいはxibの階層リストの方で、UIViewControllerの直下にUIBarButtonをドロップする事もできます。

UIControlが設置できないように見える

UIViewに自分で設置したUIToolBarの場合は、UIControl(UISegmentedControl等)を設置する事もできました。この場合、UIBarButtonItemがUIControlをラップした状態になります。所がUINavigationControllerのツールバー部分にUIControlをドロップしても、ツールバーに入れる事ができません。代わりに、UIViewControllerの管理するviewに入ってしまいます。しかし、他のUIToolBarに設置済みのUIBarButtonItemにラップされたUIControlを、UINavigationControllerのツールバーにドラッグアンドドロップする事ができます。
つまり、作業用のUIToolBarを適当なUIViewに設置して、一旦そこに用意したUIControlを移動してしまえば良いんです。

以上の話はiPhone SDK 3.0の時点ですが、遠からず改良されると思います。

広告
カテゴリー:開発 タグ:
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。