まずはViewControllerの作成です。
Xcodeから新規ファイルで CocoaTouchClasses の UIViewControler subclass を選択します。
テンプレートを元にざっくりとファイルが生成されます。
作成したクラスをアプリケーションデリゲートのインスタンス変数に追加します。
作成したクラスをMyViewControllerとし、HelloWorldAppDelegateへ以下のように定義します。
HelloWorldAppDelegate.h
- #import <uikit uikit.h="">
- @class MyViewController; // クラス宣言
- @interface HelloWorldAppDelegate : NSObject <uiapplicationdelegate> {
- UIWindow *window;
- MyViewController *myViewController; // 追加したビューをインスタンス変数として定義します
- }
- @property (nonatomic, retain) IBOutlet UIWindow *window;
- @property (nonatomic, retain) MyViewController *myViewController;
- @end
- </uiapplicationdelegate></uikit>
HelloWorldAppDelegate.m
- #import "HelloWorldAppDelegate.h"
- #import "MyViewController.h" // インポート宣言
- @implementation HelloWorldAppDelegate
- @synthesize window;
- // アクセサメソッドの合成?
- @synthesize myViewController;
- - (void)applicationDidFinishLaunching:(UIApplication *)application {
- // ViewControllerの作成、ControllerView.nibをターゲットとします。bundleはresouceの位置的な情報?
- MyViewController *aViewController = [[MyViewController alloc]initWithNibName:@"ControllerView" bundle:[NSBundle mainBundle]];
- // デリゲータのmyViewControllerに上で作成したインスタンスを指定
- self.myViewController=aViewController;
- // 一時インスタンスの解放
- [aViewController release];
- // myViewControllerからviewを取得
- UIView *controllersView=[myViewController view];
- // windowへControllerViewのviewを追加
- [window addSubview:controllersView];
- [window makeKeyAndVisible];
- }
- - (void)dealloc {
- [myViewController release]; // デリゲートが解放される時(アプリ終了時)にビューを一緒に解放します
- [window release];
- [super dealloc];
- }
- @end
ビューを作成します。
InterfaceBuilderを起動して新規作成>CocoaTouch>Viewでビューが作成できます。
ControllerView.nib としてHelloWorld プロジェクトに保存します。
Xcodeが立ち上がっていれば、自動的にリソースとして取り込むか選択が出ます。
リソースとして登録されたらResourcesフォルダに移動します。
このViewがどのコントローラークラスに所属するかを指定します。
Tools > Identity Inspector を起動して、File's Ownerを選択>ClassにMyViewControllerを指定します。
File's Ownerにアウトレット(nibファイル内の項目に接続しているインスタンス変数)を設定します。
File's OwnerをCtrlクリックしながらViewまでドラッグすればOKです。
Tool > Attribute Inspector から BackgroundColorを変更してシミュレーターで動かすと、このViewが正しく読み込まれているのがわかります。
次はビューにオブジェクトを追加します。
1 件のコメント:
始めまして、たこと申します。
当サイトでViewControllerを使って画面表示をさせる方法を読ませていただいて、実際にアプリ開発に着手しはじめたところなのですが。
いまいち、理解できていないようです。
もしよろしければ、少し御助言していただけないでしょうか?
[質問1]
ここに書いてあるよう、プロジェクトテンプレートをWindow-Basedにしました。
そして、別にNIB(XIB)をつくって、デリゲートの最初で読み込ませ、ViewをWindowにaddすることは確認できました。
しかし、addするViewの上部にNavigation Barを配置しているのですが、NavigationBarの上部半分がステータスバーの中に隠れてしまいます。
Interface Builderでデザインしていたときは、きっちりとステータスバーの真下に配置していたのですが。。。
[質問2]
私が作成しようとしているアプリは、複数の画面(cocoa的にはViewですが)があるのですが、ここのサンプルを読ませていただいた感じでは、画面数分ViewコントローラとXIBファイルを作成する。
んで、画面の切り替えは windowにaddやremove、命令はわすれましたがViewの位置の入れ替えを行ってやろうとおもっています。
それに関しては認識はあっていますでしょうか?
長々と乱文で申し訳ありませんが、
是非よろしくお願いいたします m(_ _)m
コメントを投稿