MySQLのおかげで、ランキングもできるようになったし、iPhoneアプリ側では、ちょっちGUIに凝ってみます。
定番のタブ付き、ナビ付きアプリっすね。
選べるタブは以下の3つ
1、すべて
全投稿リスト表示
2、自分の投稿
自分がした投稿だけのリスト表示
新規投稿用ボタン付き
3、自分の提案
自分がした提案だけのリスト表示
提案のベスト3を表示。
こんな感じ
で、これを作るためのテンプレートはというと...
無いんですわ。
Navigation-based ApplicationもTab Bar Applicationも片方だけの機能しか付いてなんで、帯に短しタスキに長し状態なんですな。
なので、どっちかあるいは、まったく新規にWindow-based Applicationあたりから自力で作らんと駄目ってことなんだね~。ファッキン。
ミーの欲しいテンプレートが無いザンス
で、ここで悩んだのが、どっちが親ガメなんだよって話。ナビゲーションバーもタブバーもどっちもコントローラの切り替えをしきるわけで、どっちかに従属させないといけないんだけど、どっちだ?
という悩みに答えてくれるのが、このドキュメント
iPhone OS View Controllerプログラミングガイド>Tab Bar ControllerとNavigation Controllerの組み合わせ
「ただし、Tab Bar ControllerをNavigation Controllerには決して追加しないでください」
いやいや、ピンポイントで答えが返ってきますた。
まあ、フラットに切り替えるタブバーが優位だろうってのは想像ついてたけどね。
というわけで、今回はTab Bar Applicationテンプレートプロジェクトにナビゲーションを組み込んでみます。いつものようにファイル>新規プロジェクト...メニューを選んでワントゥスリ~。
プロジェクト名はkonohana_testとしてデスクトップに作りました。ま、ここらへんは適当に。
こいつをビルドして実行すると
となるわけですな。
こいつをテーブルビュー、ナビゲーションバー付きにするわけなんですが、Xibファイルをいじるだけで、どこまでいけるか試してみます。とりあえずMainWindow.xibをダブルクリックだ!
こいつじゃい!
で、久々のInterface Builderなわけですが、MainWindow.xibウィンドウ側にあるTab Bar Controllerって項目は横のディスクロージャ(横向き三角)をクリックすると中身がみれるようになっとります。
この中のFirstViewControllerてのが、Xcodeのプロジェクト側に用意されたカスタムコントロールクラスで、サブビューとしてUILabel、UITextViewを埋め込んだUIViewを一つ管理対象にしとるわけです。
この「First View Controller (First)」て項目を選択状態にして、Tools>Inspectorメニューを選ぶとインスペクタウィンドウが表示されて、Identityタブを選ぶとクラス名が選択できるのは「iPhoneアプリ開発、その(13)」で書いたとおり。
こいつをNavigation Controllerに選択しなおしてXcodeでビルドすれば、ナビゲーションバーは付くんですが、その場合、Navigation Controllerが管理するUIViewControllerの設定やらUINavigationBarの追加やらを手動でやっていかないと駄目なんで、めんどくさい。
お気軽にやるにはNavigation ControllerをLibraryウィンドウからドロップするのが一番でした。
こうやってタブバーの項目を増やすわけですな。
それと追加したNavigation Controllerや元からあったFirst View Controller、View Controllerはドラッグする事でタブバーの中の順序を変更できる。
Navigation Controllerの中はこんな状態。
中のコントローラがUIViewControllerなんですな。
なので、こいつをUITableViewControllerに変更します。
試しにNavigation Controllerの中にUITableViewControllerをドロップしてみると、元のUIViewControllerがUITableViewControllerに置き換わりました。
しかもUITableViewまで追加されてる。
びっくりザンス
そのままXcodeに戻ってビルドしたら、ちゃんとナビ付きテーブル出るんですな~。
てことがわかったので、Interface Builderに戻って、元のFirst View Controller (First)、View Controller (Second)には消えてもらう事にしました。選択してdeleteキーね。
すっきりしたところで、今度はNavigation Controller (Item)をオプションキーを押しながらTab Bar Controllerの下にドラッグ。
こいつをもう一度繰り返して、3つのUITableViewController完成。
あとは、各UITableViewControllerの中にあるNavigation Item、Tab Bar Itemを選んでInspectorウィンドウのAttributesタブでTitleを設定しておしまい。Titleは上から順に
すべて
自分の投稿
自分の提案
としました。
ま、これでXcodeでリビルドして実行すると3つのタブのナビ付きテーブルビューアプリとなるわけです。絵的に寂しいのでTab Bar ItemのAttributeでImageを指定してみますた。
先にXcodeでプロジェクトにPNG画像を登録してからInterface Builderを起動すると、コンボメニューから選べるから便利。プロジェクトへのPNG画像の登録方法は「iPhoneアプリ開発、その(22)」を読みましょう。
おお、なんかワクワクしてきた
ちなみにPNG画像はアルファチャネルの画像が利用されるみたいっす。25x25くらいが妥当なサイズっぽい。
ではでは。
------------
サンプルプロジェクト:konohana_test.zip
ゲット!
定番のタブ付き、ナビ付きアプリっすね。
選べるタブは以下の3つ
1、すべて
全投稿リスト表示
2、自分の投稿
自分がした投稿だけのリスト表示
新規投稿用ボタン付き
3、自分の提案
自分がした提案だけのリスト表示
提案のベスト3を表示。
こんな感じ
で、これを作るためのテンプレートはというと...
無いんですわ。
Navigation-based ApplicationもTab Bar Applicationも片方だけの機能しか付いてなんで、帯に短しタスキに長し状態なんですな。
なので、どっちかあるいは、まったく新規にWindow-based Applicationあたりから自力で作らんと駄目ってことなんだね~。ファッキン。
ミーの欲しいテンプレートが無いザンス
で、ここで悩んだのが、どっちが親ガメなんだよって話。ナビゲーションバーもタブバーもどっちもコントローラの切り替えをしきるわけで、どっちかに従属させないといけないんだけど、どっちだ?
という悩みに答えてくれるのが、このドキュメント
iPhone OS View Controllerプログラミングガイド>Tab Bar ControllerとNavigation Controllerの組み合わせ
「ただし、Tab Bar ControllerをNavigation Controllerには決して追加しないでください」
いやいや、ピンポイントで答えが返ってきますた。
まあ、フラットに切り替えるタブバーが優位だろうってのは想像ついてたけどね。
というわけで、今回はTab Bar Applicationテンプレートプロジェクトにナビゲーションを組み込んでみます。いつものようにファイル>新規プロジェクト...メニューを選んでワントゥスリ~。
プロジェクト名はkonohana_testとしてデスクトップに作りました。ま、ここらへんは適当に。
こいつをビルドして実行すると
となるわけですな。
こいつをテーブルビュー、ナビゲーションバー付きにするわけなんですが、Xibファイルをいじるだけで、どこまでいけるか試してみます。とりあえずMainWindow.xibをダブルクリックだ!
こいつじゃい!
で、久々のInterface Builderなわけですが、MainWindow.xibウィンドウ側にあるTab Bar Controllerって項目は横のディスクロージャ(横向き三角)をクリックすると中身がみれるようになっとります。
この中のFirstViewControllerてのが、Xcodeのプロジェクト側に用意されたカスタムコントロールクラスで、サブビューとしてUILabel、UITextViewを埋め込んだUIViewを一つ管理対象にしとるわけです。
この「First View Controller (First)」て項目を選択状態にして、Tools>Inspectorメニューを選ぶとインスペクタウィンドウが表示されて、Identityタブを選ぶとクラス名が選択できるのは「iPhoneアプリ開発、その(13)」で書いたとおり。
こいつをNavigation Controllerに選択しなおしてXcodeでビルドすれば、ナビゲーションバーは付くんですが、その場合、Navigation Controllerが管理するUIViewControllerの設定やらUINavigationBarの追加やらを手動でやっていかないと駄目なんで、めんどくさい。
お気軽にやるにはNavigation ControllerをLibraryウィンドウからドロップするのが一番でした。
こうやってタブバーの項目を増やすわけですな。
それと追加したNavigation Controllerや元からあったFirst View Controller、View Controllerはドラッグする事でタブバーの中の順序を変更できる。
Navigation Controllerの中はこんな状態。
中のコントローラがUIViewControllerなんですな。
なので、こいつをUITableViewControllerに変更します。
試しにNavigation Controllerの中にUITableViewControllerをドロップしてみると、元のUIViewControllerがUITableViewControllerに置き換わりました。
しかもUITableViewまで追加されてる。
びっくりザンス
そのままXcodeに戻ってビルドしたら、ちゃんとナビ付きテーブル出るんですな~。
てことがわかったので、Interface Builderに戻って、元のFirst View Controller (First)、View Controller (Second)には消えてもらう事にしました。選択してdeleteキーね。
すっきりしたところで、今度はNavigation Controller (Item)をオプションキーを押しながらTab Bar Controllerの下にドラッグ。
こいつをもう一度繰り返して、3つのUITableViewController完成。
あとは、各UITableViewControllerの中にあるNavigation Item、Tab Bar Itemを選んでInspectorウィンドウのAttributesタブでTitleを設定しておしまい。Titleは上から順に
すべて
自分の投稿
自分の提案
としました。
ま、これでXcodeでリビルドして実行すると3つのタブのナビ付きテーブルビューアプリとなるわけです。絵的に寂しいのでTab Bar ItemのAttributeでImageを指定してみますた。
先にXcodeでプロジェクトにPNG画像を登録してからInterface Builderを起動すると、コンボメニューから選べるから便利。プロジェクトへのPNG画像の登録方法は「iPhoneアプリ開発、その(22)」を読みましょう。
おお、なんかワクワクしてきた
ちなみにPNG画像はアルファチャネルの画像が利用されるみたいっす。25x25くらいが妥当なサイズっぽい。
ではでは。
------------
サンプルプロジェクト:konohana_test.zip
ゲット!