Dropbox

練習で作ったiPhoneとiPadの両方で走るuniversal binaryのテスト・プロジェクトを公開いたします。自分自身のテンプレートとして使うために極力シンプルなものにしましたので、容易に読み解く事が出来ると思います。細かいところまで正しいコードを書いているとは限りませんが大きな方針は間違ったものでは無いと思います。

[ コードの権利 ]
コードの大半はXcodeが作り出したものです。また、ごく標準的なものですので、私自身が権利を主張するようなものは何もありません。また、無保証での提供となります。ご自身の責任においてご利用ください。

[ プロジェクトの概要 ]
iPhoneで起動するとTableViewを表示し、クリックによりTextViewにNavigationコントロールにより遷移する標準的なiPhoneアプリ(DrillDownって言うの?)です。同じbianryをiPadで実行するとSplitViewにて同様の動作を行ないます。簡単なプログラムですが、実際のアプリケーションで行うようにデータはUIとは別の共通クラスにより提供するようにしています。

[ プロジェクト作成の概要 ]
Xcode 3.2.3 SDK 4.0.1を使用して作成しました。プロジェクト自体を公開していますので、全てはそれを見て頂ければ良いのですが、どうやってiPhoneプロジェクトからuniversalなプロジェクトに変更していったのかなどを理解いただくため大きなステップを紹介いたします。

< iPhoneアプリの作成 >
– 新規プロジェクトをiPhone用のNavaigation-based Applicationとして作成します。
– TableViewをタップした後に表示するTextView用のクラスとnibを’DetailViewController’として作成。ごく一般的な内容なので詳細はプロジェクトを参照ください。
– データを供給するクラス’MyEngineを作成。RootViewControllerに組み込みます。
ここまででiPhoneアプリとしては完成です。

< Universal Binary化 >
– ターゲット UniTest2を選びプロジェクト, 現在のターゲットを iPad 用にアップグレードする。この時’One Universal application’を選択する。
– UniTest2AppDelegateクラスのUINavigationControllerのプロパティをコメントアウトし代わりにUIViewControllerクラスのプロパティを作成します。元のMainWindow.xibの該当接続を貼り直します。
-> 起動時にiPhoneかiPadかでinfo.plistを参照しMainWindow.xibかMainWindow-iPad.xibが選択されま す。ただしWindowにviewを割付るのはAppDelegateクラスの中なので、ここの接続を正しく行う必要があります。
– 内容を表示するためのTextViewを含んだクラスおよびnibを’DetailViewController-iPad’という名前で作成する。’Targeted for iPad’オプションを忘れないように。このクラスはUIPopoverControllerDelegateとUISPlitViewControllerDelegateになります。クラス名はDetailViewController_iPadに成っているので注意。
– TableViewControllerのサブクラスとしてRootViewController-iPadというファイル名でクラスを作成します(クラス名はRootViewController_iPadになってしまうのでファイル名は別の方が良かったかも)。これはUISplitViewのtable部分のcontrollerになります。
– iPadで最初に表示されるviewを含むMainWindow-iPad.xibを作成します。MainWindow-iPadという名前はinfo.plistで既定値として指定されているものです。これにSplit View Controllerを追加し各種接続を行ないます。

Trackback

no comment untill now

Add your comment now