アプリ開発雑記[5] NavigationController + Tabbar その3

NavigationContollerをTabBarに埋め込む件の続き。

やっとスマートに解決できました。

前々回は、Interface Builderを使っては実現できないと言っていたものの、
前回、早速それを否定するチュートリアルを見つけた、というところまでご報告してました。

それで、前回紹介したチュートリアル通りにやってみました。

しかし、なぜかうまく行かない。今日もまた2時間近く浪費して途方に暮れてました。
三たび改めてGoogleさんに聞いてみたところ、親切なチュートリアルを見つけました。
しかも、前回紹介したものよりかなりスマートです。

今日の成果

試してみたら、ソースコードを足したり消したりすることなく、骨組みができてしまいました。
http://thoughtsyndicate.com/thoughts/20081115/creating-navigation-control-inside-tab-bar-control.html

前回のものは、最初Window-Based App.として新規プロジェクトを起こしていたところを、今日見つけたものはひねりなく素直にTab Bar App.で新規作成から始まります。以下、チュートリアルのてきとう意訳をどうぞ。

チュートリアル要約(てきとう意訳)

スクリーンショットは元記事をご参照下さい。

STEP1

Tab Bar App.プロジェクトを作成し、デフォルトできるSecondView.xibを削除します。<fig.1>

STEP2

”グループとソース”の"Classes"を右クリックして、追加→新規ファイルを選択、UITableViewController subclassから新規クラスを作成します。<fig.2>(macj註:チュートリアルでは"NavigationViewController"という名前。これがNavigationBar下にできるテーブルビューのコントローラーになります。)さらに、そのUITableViewControllerクラスと対になる、XIBファイルを"Resources"フォルダに追加します。名前はなんでもいいです。(macj註:チュートリアルではNavigationViewController.xibという名前。対となるコントローラーと同じ名前にするのがわかりやすいらしいです)

STEP3

先ほど作ったXIBファイルをダブルクリックして、Interface Builderを起動します。IBが起動すると、NavigationViewController.XIBウィンドウにはすでにUIViewが存在します。私たちが作りたいのはNavigation Controllerなので選択して削除します。Library Panel<fig. 3a>からXIBウィンドウにUITableViewをドラッグ&ドロップします。<fig. 3b>

STEP4

"File's Owner"クラスをさきほど作った"NavigationViewController"にします。Inspector Panel (command-4)で"Class Identity"の"Class"のところを変更して下さい。

STEP5

NavigationViewController.xibを保存する前に、もうひとつだけやることがあります。さきほどDrag&DropしたUITableViewをFile's Ownerオブジェクトと接続する必要があります。”File's Owner”のアイコンから右クリックで"Table View"へDrag&Dropします。さらに、"File's Owner"を"Table View”のdelegate、datasourceにするために、今度はTable ViewからFile's OwnerへDrag&Dropします。<fig. 5a &5b> できたら保存します。

STEP6

Xcodeに戻り、今度はMainWindow.xibをダブルクリックして再びIBへかえってきます。"Tab Bar Control"<fig. 6>を選択して、Inspector Panelの一番左のタブで、"Second" viewのコントローラーをNavigation Controllerに変更します。(macj註:Titleが"Second"の行のClassを"Navigation Controller"に変更します。)

STEP7

次にTab Bar Controllerの下位にある"Second" tabを選択します。(macj註:ここが少しわかりにくいですが、<fig 7b>にあるようにXIBウィンドウをリスト表示にすると、下位階層が見られるようになります。そこでTab Bar Controllerの下の"~~~ (Second)"の下の、"View Controller (Item)"の設定をすることについて述べてあります。)これはviewであり、Navigation Controllerではありません。このViewを制御するコントローラーを設定する必要があります<fig. 7a>。また、nibファイルも設定します<fig. 7b>。

STEP8

ビルドして実行!<fig. 8>

以上、自分の理解の確認と備忘録をかねて訳してみました。

 

アプリ開発雑記[5] NavigationController + Tabbar その3」への1件のフィードバック

  1. ピンバック: アプリ開発雑記[6] SQLiteBooks(その1) - macj's Log

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です