Upload
masayuki-nii
View
463
Download
3
Embed Size (px)
Citation preview
iPhoneでタブバーを非表示に“無理矢理”する方法
新居雅行第34回Cocoa勉強会 関東
2009/5/30
12009年5月30日土曜日
Agenda
•Motivation/なぜそんな事を考えたか•Kick Arround/いろいろ試行錯誤•Solution/とにかくできるようにしてみた•Wrap-up
22009年5月30日土曜日
Motivation
•こんな要望が出た• 2画面切り替えを作りたい• タブバーがあれば、「切り替え」は簡単かつスムーズ• selectedItemプロパティに数字を代入するだけ• でも、TabBarは消えて欲しい•サポートに聞いてみたら…• 『 消すことはお薦めできません。…』• ユーザインタフェースのガイドラインでは常に表示しておくようにと書かれている
• だけど、「消す」に相当するプロパティがあるし…32009年5月30日土曜日
ナビゲーションの復習
•タブバー、ナビゲーションバーがある場合• かつ、ナビゲーションで複数のビューに移動する場合•タブバーのオブジェクトを1つ用意する• タブバーにナビゲーションバーを管理させる• ナビゲーションバーがビューを移動する(プッシュ)• これらは「コントローラーベース」で構築する• Interface Builderでどう作る?• たぶん、タブバー以外はalloc/initWithFrameという人が多いかも(確か、サンプルはこれ系だったか?)
• Interface Builderでの階層をどう作るか?42009年5月30日土曜日
ナビゲーションでのクラス構成
UITabBarController UITabBar
UINavigationController
UINavigationController
UINavigationBar
UINavigationBar
(UIViewController)
(UIViewController)
UITabBarItem
UITabBarItem
52009年5月30日土曜日
Interface Builderで作るとしたらどうするか?
62009年5月30日土曜日
試行錯誤
72009年5月30日土曜日
タブバーは所詮UIViewだろう?
•UITabBarはUIViewの派生クラス• UIViewであれば、hiddenプロパティをYESにすれば簡単に消えるだろう?
•結果• なぜか消えない…• 高さも変わらない…• 透明にしてみたり、あれこれ…• とにかく、見え方は常にTabBarそのままである82009年5月30日土曜日
いろいろ調べると…
•UIViewControllerクラス• hidesBottomBarWhenPushedプロパティ•このプロパティは使えそう• プッシュしたらTabBarは消せる• でも、「プッシュ」しないといけない• UINavigationControllerやUINavigationBarにあるメソッドでプッシュできる
• つまり、ナビゲーションバーでのナビゲートするときに、タブバーを消すという仕組みが用意されている
92009年5月30日土曜日
そこで考えた
•TabBarでナビゲーションした• あるビューコントローラーがアクティブになる• hidesBottomBarWhenPushedプロパティをYESに• ビューが表示された直後に、さらに別のビューにNavigationBarのプッシュを利用して移動
•つまり、ダミーのビューを表示させ、即座に別のビューにナビゲートすれば、消せるのではないか?
102009年5月30日土曜日
つまりこういうこと
FirstDummy SecondDummy
SecondViewFirstView
TabBar
112009年5月30日土曜日
プロジェクトをチェック!
122009年5月30日土曜日
それでも残る謎
•ナビゲーションバーを明示的に消す必要があったりなかったり…
•ナビゲーションバーの表示/非表示の設定はこれで正しいと言えるのか?
•想定外の使い方をしているだけに、文句は言えないかもしれない?
132009年5月30日土曜日
まとめ
•フレームワークの制約をかいくぐるのは大変• 言い換えれば、それだけCocoa Touchはよく考えて作られている
•この方法よりもいい方法はある• 通常は2つのUIViewControllerを切り替える• 表示/非表示、あるいはサブビューの入れ替え•いいトレーニングになりました…
142009年5月30日土曜日
書籍情報など
•iPhoneアプリケーションプログラミング• 技術評論社/3200円(税抜)• 2009/6/19発売• Amazon.co.jp等で予約受付中•etc.• 解説+リファレンス• 田畑さん、木村さんが査読• 鳴海さんがOpenGLサンプル作成• オンラインで閲覧可能• iPhoneアプリが認証情報を提供• 黒木さん、手塚さん、村上さんもテスターTutoringも引き続きやっています セミナーは
形式を変えて続ける予定
152009年5月30日土曜日