15
iPhoneでタブバーを非表示 に“無理矢理”する方法 新居雅行 第34回Cocoa勉強会 関東 2009/5/30 1 2009530日土曜日

Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法

Embed Size (px)

Citation preview

Page 1: Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法

iPhoneでタブバーを非表示に“無理矢理”する方法

新居雅行第34回Cocoa勉強会 関東

2009/5/30

12009年5月30日土曜日

Page 2: Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法

Agenda

•Motivation/なぜそんな事を考えたか•Kick Arround/いろいろ試行錯誤•Solution/とにかくできるようにしてみた•Wrap-up

22009年5月30日土曜日

Page 3: Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法

Motivation

•こんな要望が出た• 2画面切り替えを作りたい• タブバーがあれば、「切り替え」は簡単かつスムーズ• selectedItemプロパティに数字を代入するだけ• でも、TabBarは消えて欲しい•サポートに聞いてみたら…• 『 消すことはお薦めできません。…』• ユーザインタフェースのガイドラインでは常に表示しておくようにと書かれている

• だけど、「消す」に相当するプロパティがあるし…32009年5月30日土曜日

Page 4: Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法

ナビゲーションの復習

•タブバー、ナビゲーションバーがある場合• かつ、ナビゲーションで複数のビューに移動する場合•タブバーのオブジェクトを1つ用意する• タブバーにナビゲーションバーを管理させる• ナビゲーションバーがビューを移動する(プッシュ)• これらは「コントローラーベース」で構築する• Interface Builderでどう作る?• たぶん、タブバー以外はalloc/initWithFrameという人が多いかも(確か、サンプルはこれ系だったか?)

• Interface Builderでの階層をどう作るか?42009年5月30日土曜日

Page 5: Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法

ナビゲーションでのクラス構成

UITabBarController UITabBar

UINavigationController

UINavigationController

UINavigationBar

UINavigationBar

(UIViewController)

(UIViewController)

UITabBarItem

UITabBarItem

52009年5月30日土曜日

Page 6: Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法

Interface Builderで作るとしたらどうするか?

62009年5月30日土曜日

Page 7: Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法

試行錯誤

72009年5月30日土曜日

Page 8: Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法

タブバーは所詮UIViewだろう?

•UITabBarはUIViewの派生クラス• UIViewであれば、hiddenプロパティをYESにすれば簡単に消えるだろう?

•結果• なぜか消えない…• 高さも変わらない…• 透明にしてみたり、あれこれ…• とにかく、見え方は常にTabBarそのままである82009年5月30日土曜日

Page 9: Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法

いろいろ調べると…

•UIViewControllerクラス• hidesBottomBarWhenPushedプロパティ•このプロパティは使えそう• プッシュしたらTabBarは消せる• でも、「プッシュ」しないといけない• UINavigationControllerやUINavigationBarにあるメソッドでプッシュできる

• つまり、ナビゲーションバーでのナビゲートするときに、タブバーを消すという仕組みが用意されている

92009年5月30日土曜日

Page 10: Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法

そこで考えた

•TabBarでナビゲーションした• あるビューコントローラーがアクティブになる• hidesBottomBarWhenPushedプロパティをYESに• ビューが表示された直後に、さらに別のビューにNavigationBarのプッシュを利用して移動

•つまり、ダミーのビューを表示させ、即座に別のビューにナビゲートすれば、消せるのではないか?

102009年5月30日土曜日

Page 11: Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法

つまりこういうこと

FirstDummy SecondDummy

SecondViewFirstView

TabBar

112009年5月30日土曜日

Page 12: Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法

プロジェクトをチェック!

122009年5月30日土曜日

Page 13: Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法

それでも残る謎

•ナビゲーションバーを明示的に消す必要があったりなかったり…

•ナビゲーションバーの表示/非表示の設定はこれで正しいと言えるのか?

•想定外の使い方をしているだけに、文句は言えないかもしれない?

132009年5月30日土曜日

Page 14: Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法

まとめ

•フレームワークの制約をかいくぐるのは大変• 言い換えれば、それだけCocoa Touchはよく考えて作られている

•この方法よりもいい方法はある• 通常は2つのUIViewControllerを切り替える• 表示/非表示、あるいはサブビューの入れ替え•いいトレーニングになりました…

142009年5月30日土曜日

Page 15: Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法

書籍情報など

•iPhoneアプリケーションプログラミング• 技術評論社/3200円(税抜)• 2009/6/19発売• Amazon.co.jp等で予約受付中•etc.• 解説+リファレンス• 田畑さん、木村さんが査読• 鳴海さんがOpenGLサンプル作成• オンラインで閲覧可能• iPhoneアプリが認証情報を提供• 黒木さん、手塚さん、村上さんもテスターTutoringも引き続きやっています セミナーは

形式を変えて続ける予定

152009年5月30日土曜日