2009年05月10日

アプリ開発雑記[6] SQLiteBooks(その1)

今日は、前回記事までの成果であるNavigation ControllerをTab Bar内のタブに実装したものの発展系として、Navigation Controller以下にサンプルコード"SQLiteBooks"を埋め込むことにトライしました。作りたいアプリではユーザーが入力したデータを追加したり、削除したりする機能がある予定でして、SQLiteが唯一の方策かどうかはさっぱりわかりませんが、サンプルコードにあるようなデータの管理をイメージしていたので取り入れてみることにしました。備忘のために、作業内容+αをまとめます!

前回記事:アプリ開発雑記[5] Navigation Controller + TabBar その3
http://road2iphone.seesaa.net/article/118949434.html



(1) SQLiteとは?

WikiPediaより:http://ja.wikipedia.org/wiki/SQLite
SQLite はMySQLPostgreSQLと同じデータベース管理システムであるが、サーバとしてではなくアプリケーションに組み込まれて利用される軽量のデータベースである。 一般的なRDBMSに比べて大規模な仕事には不向きだが、中小規模ならば速度に遜色はない。 また、APIは単純にライブラリを呼び出すだけであり、データの保存に単一のファイルのみを使用する事が特徴である

組み込み機器やモバイルアプリケーションで流行っているようです。



(2) SQLiteBooksのファイルたち

  • Database Interactions
    • AppDelegate.h/m
    • Book.h/m

  • User Interface
    • MasterViewController.h/m
    • DetailViewController.h/m
    • AddViewController.h/m
    • EditingViewController.h/m
  • Resources
    • MainWindow.xib
    • DetailView.xib
    • EditingView.xib
    • bookdb.sql


"Database Interaction", "User Interface", "Resource"というのはサンプルコードのグループです。ちなみに、細かい動作はまだ全く理解していないです。とりあえず、TabBarの中にこれらを埋め込むことを目標としました。注目すべきはxibファイルとxxxViewControllerたち、すなわち、ビューの制御に関わるファイルとなります。



(3) やったこと(前編)


(3-0) 必要なファイルをプロジェクトに追加します。SQLiteBooksから、上記をすべてコピーします。

(3-1) 前回記事で言うNavigationViewControllerが果たしていた役割をMasterViewControllerに担わせます。ただし、MasterViewControllerはUIViewControllerなので、UITableViewControllerにします。

@interface MasterViewController : UITableViewController {
    IBOutlet UITableView *tableView;
    UINavigationController *addNavigationController;
    DetailViewController *detailViewController;
    AddViewController *addViewController;
}

(3-2) MainWindow.xibをダブルクリックしてInterface Builderを立ち上げます。そして、NavigationViewControllerがControllerを担っていたViewControllerはMasterViewControllerに置き換えてあげます。<fig. 1>

TableTry_MainWindowxib.png
<fig. 1>




(3-3) 同じくXcode上で、前回作ったNavigationViewController.xibをダブルクリックして、Interface builderで編集します。こちらは、File's OwnerをMasterViewControllerに書き換えます。(NavigationViewController.xibがスクリーンショットではNavController.xibとなってます;私がそう言う名前をつけただけです、紛らわしくてすみません・・・)これでNavigationViewControllerはお役御免です。xibは上記編集後、引き続き使用します。<fig. 2;一部次の作業が反映されてます。>


TableTry_NavControllerxib.png
<fig. 2>




SQLite_MainWindowxib.png
<fig. 3>




(3-4)  SQLiteBooksのMainWindow.xib<fig. 3>にあるものと同じ、"Navigation Item"と"Bar Button Item"をLibraryからNavigationViewController.xibへDrag&Dropします。(<fig. 2>は既に追加済みです。)

(3-5) Bar Button ItemからFiles's Ownerへ右Drag&Dropして、IBAction addBookにつなぎます。また、Table ViewからもFile's OwnerへDrag&Dropして、datasource、delegateとしてつなげます。まだあります。Navigation ItemからもFile's OwnerへDrag&DropしてnavigationItemとしてつなげます。最後にFile's OwnerからTable Viewへ接続します(view)。これを忘れるとTabBarの該当タブを選択しても画面が現れません。落ちます!(これを忘れてずいぶんはまりました)

TableTry_NavControllerxib2.png
<fig. 4>

続きは次回。
あとはXcodeでのソースの改変がメインです。



<<免責事項>>
ここに紹介した方法を参考にしてアプリケーション開発を行ったことで発生しうる如何なる問題についても、当ブログ管理者は一切責任を負いません。
拍手する
posted by macj at 23:50 | Comment(0) | TrackBack(0) | iPhoneアプリ開発 | このブログの読者になる | 更新情報をチェックする

2009年05月09日

アプリ開発雑記[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>

以上、自分の理解の確認と備忘録をかねて訳してみました。
拍手する
posted by macj at 02:50 | Comment(1) | TrackBack(0) | iPhoneアプリ開発 | このブログの読者になる | 更新情報をチェックする

2009年05月08日

アプリ開発雑記[4] NavigationController + TabBar その2

昨日からNavigationControllerをTabBarに埋め込む方法で悩んでいます。

昨日の記事で書いた方法は、記事UP後に試してみたところ、とりあえずNavigationControllerがTabBarに入ることまで確認できました。しかしながら、xib無しでprogramaticallyにテーブルをwindowに配置したり、datasourceを紐付けるのがうまくいかず、中身は空っぽのまま。サンプルコード”TheElement”を落ち着いて読み直さなければいけません。難しい。

というわけで、上記はややハードルが高そうなので、もう一度Googleさんに聞いてみました。すると、別なものを見つけました。今度はxib(Interface Builder)を使う方法です。こちらの方がわかりやすそう。TableViewも今まで通り扱える・・・かな。

http://twilloapp.blogspot.com/2009/03/how-to-embed-navigation-controller.html

今日はGW明けで仕事が忙しすぎて疲れました。明日試そうと思います。とりあえず備忘のためにメモです。 拍手する
posted by macj at 00:08 | Comment(0) | TrackBack(0) | iPhoneアプリ開発 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は90日以上新しい記事の投稿がないブログに表示されております。