MySQLのおかげで、ランキングもできるようになったし、iPhoneアプリ側では、ちょっちGUIに凝ってみます。
 定番のタブ付き、ナビ付きアプリっすね。

 選べるタブは以下の3つ

 1、すべて
  全投稿リスト表示

 2、自分の投稿
  自分がした投稿だけのリスト表示
  新規投稿用ボタン付き

 3、自分の提案
  自分がした提案だけのリスト表示
  提案のベスト3を表示。
  
$テン・シー・シー-1
こんな感じ

 で、これを作るためのテンプレートはというと...

 無いんですわ。

 Navigation-based ApplicationもTab Bar Applicationも片方だけの機能しか付いてなんで、帯に短しタスキに長し状態なんですな。
 なので、どっちかあるいは、まったく新規にWindow-based Applicationあたりから自力で作らんと駄目ってことなんだね~。ファッキン。

$テン・シー・シー-2
ミーの欲しいテンプレートが無いザンス

 で、ここで悩んだのが、どっちが親ガメなんだよって話。ナビゲーションバーもタブバーもどっちもコントローラの切り替えをしきるわけで、どっちかに従属させないといけないんだけど、どっちだ?
 という悩みに答えてくれるのが、このドキュメント

iPhone OS View Controllerプログラミングガイド>Tab Bar ControllerとNavigation Controllerの組み合わせ

「ただし、Tab Bar ControllerをNavigation Controllerには決して追加しないでください」

 いやいや、ピンポイントで答えが返ってきますた。
 まあ、フラットに切り替えるタブバーが優位だろうってのは想像ついてたけどね。

 というわけで、今回はTab Bar Applicationテンプレートプロジェクトにナビゲーションを組み込んでみます。いつものようにファイル>新規プロジェクト...メニューを選んでワントゥスリ~。

$テン・シー・シー-3

 プロジェクト名はkonohana_testとしてデスクトップに作りました。ま、ここらへんは適当に。
 こいつをビルドして実行すると

$テン・シー・シー-4

 となるわけですな。
 こいつをテーブルビュー、ナビゲーションバー付きにするわけなんですが、Xibファイルをいじるだけで、どこまでいけるか試してみます。とりあえずMainWindow.xibをダブルクリックだ!

$テン・シー・シー-5
こいつじゃい!

 で、久々のInterface Builderなわけですが、MainWindow.xibウィンドウ側にあるTab Bar Controllerって項目は横のディスクロージャ(横向き三角)をクリックすると中身がみれるようになっとります。

$テン・シー・シー-7

 この中のFirstViewControllerてのが、Xcodeのプロジェクト側に用意されたカスタムコントロールクラスで、サブビューとしてUILabel、UITextViewを埋め込んだUIViewを一つ管理対象にしとるわけです。
 この「First View Controller (First)」て項目を選択状態にして、Tools>Inspectorメニューを選ぶとインスペクタウィンドウが表示されて、Identityタブを選ぶとクラス名が選択できるのは「iPhoneアプリ開発、その(13)」で書いたとおり。

$テン・シー・シー-8

 こいつをNavigation Controllerに選択しなおしてXcodeでビルドすれば、ナビゲーションバーは付くんですが、その場合、Navigation Controllerが管理するUIViewControllerの設定やらUINavigationBarの追加やらを手動でやっていかないと駄目なんで、めんどくさい。
 お気軽にやるにはNavigation ControllerをLibraryウィンドウからドロップするのが一番でした。

$テン・シー・シー-9

 こうやってタブバーの項目を増やすわけですな。
 それと追加したNavigation Controllerや元からあったFirst View Controller、View Controllerはドラッグする事でタブバーの中の順序を変更できる。

 Navigation Controllerの中はこんな状態。

$テン・シー・シー-10

 中のコントローラがUIViewControllerなんですな。
 なので、こいつをUITableViewControllerに変更します。
 試しにNavigation Controllerの中にUITableViewControllerをドロップしてみると、元のUIViewControllerがUITableViewControllerに置き換わりました。

$テン・シー・シー-18

 しかもUITableViewまで追加されてる。

$テン・シー・シー-12
びっくりザンス

 そのままXcodeに戻ってビルドしたら、ちゃんとナビ付きテーブル出るんですな~。
 てことがわかったので、Interface Builderに戻って、元のFirst View Controller (First)、View Controller (Second)には消えてもらう事にしました。選択してdeleteキーね。
 すっきりしたところで、今度はNavigation Controller (Item)をオプションキーを押しながらTab Bar Controllerの下にドラッグ。

$テン・シー・シー-13

 こいつをもう一度繰り返して、3つのUITableViewController完成。
 あとは、各UITableViewControllerの中にあるNavigation Item、Tab Bar Itemを選んでInspectorウィンドウのAttributesタブでTitleを設定しておしまい。Titleは上から順に

 すべて
 自分の投稿
 自分の提案

 としました。

$テン・シー・シー-15

 ま、これでXcodeでリビルドして実行すると3つのタブのナビ付きテーブルビューアプリとなるわけです。絵的に寂しいのでTab Bar ItemのAttributeでImageを指定してみますた。

$テン・シー・シー-16

 先にXcodeでプロジェクトにPNG画像を登録してからInterface Builderを起動すると、コンボメニューから選べるから便利。プロジェクトへのPNG画像の登録方法は「iPhoneアプリ開発、その(22)」を読みましょう。

$テン・シー・シー-17
おお、なんかワクワクしてきた

 ちなみにPNG画像はアルファチャネルの画像が利用されるみたいっす。25x25くらいが妥当なサイズっぽい。
 ではでは。

------------
サンプルプロジェクト:konohana_test.zip


ゲット!
treasure