2009-03-05 20 views
1

私はiPhone SDKを初めて使い、3つのビューを作成し、それらの間を切り替えようとしています。データはサーバーから来て、基本的に1つのビューを表示し、他の2つをキャッシュします。これまでは、ビューを作成して実行時に表示しようとしています。私のコードは以下の通りです。空白の画面しか表示されず、キーコンセプトが欠けていると思います。どんな助け?iPhoneを再生時に表示しますか?

#import <UIKit/UIKit.h> 
#import "ImageViewController.h" 
@interface Test5ViewController : UIViewController 
{ 
    IBOutlet UIView *rootView; 
    ImageViewController *curImage; 
    ImageViewController *nextImage; 
    ImageViewController *prevImage; 
} 

@property(nonatomic,retain) IBOutlet UIView *rootView; 
@property(nonatomic,retain) ImageViewController *curImage; 
@property(nonatomic,retain) ImageViewController *nextImage; 
@property(nonatomic,retain) ImageViewController *prevImage; 

@end 

- (void)loadView 
{ 

    self.curImage = [[ImageViewController alloc]initWithNibName:@"ImageView" bundle:[NSBundle mainBundle]]; 
    UIImage *pic = [UIImage imageNamed:@"baby-gorilla.jpg"]; 
    [self.curImage assignImage:pic]; 
    self.rootView = self.curImage.view; 

} 

#import <UIKit/UIKit.h> 


@interface ImageViewController : UIViewController 
{ 
    IBOutlet UIImageView *image; 
} 

-(void)assignImage:(UIImage *)screenShotToSet; 


@property(nonatomic,retain) IBOutlet UIImageView *image; 

@end 

答えて

2

iPhone SDKへようこそ!

一般に、ビューを表示するには2通りの方法があります。

まず、最も一般的には、Interface Builderで作成されたNIBファイルを使用します。これは通常、最も簡単な方法です。ここでやろうとしていることをお勧めします。基本的にxcodeで新しいファイルを作成し、「ユーザーインターフェイス」を選択して「XIBの表示」を選択すると、xcodeで始まるようになります。これは、基本的なNIBファイルを作成します(歴史的な理由から、XIBではなくNIBと呼ばれています)。インターフェイスビルダの最初のステップは、 "File's Owner"のクラス名をUIViewControllerサブクラス(Test5ViewController)に変更することです。その後、IBがビューウィンドウに許可するものをすべて削除したり、事前に提供されたビューオブジェクトを独自のビューオブジェクトに置き換えることもできます。そして、ここではそのトリックがあります:ビューアウトレット(UIViewControllerスーパークラスによって提供される)がビューに接続されていることを確認してください。これが完了すると、NIBがロードされると自動的にこのビューが読み込まれます。次に、MainWindow.xib NIBファイルにUIViewControllerサブクラス(Test5ViewController)を入れて、が自動的にロードされ、あなたはビジネスに入ります。

ここでは、ここでやっている方法が第2の方法です。一部の人は、常にこの方法でコードを作成したいと思っています。ユーザーインターフェイスビルダーではありません。時には常に柔軟性が必要なことは間違いありませんが、何が起こっているのかを理解することができます。他にもあるかもしれませんが、欠けている主なものは、上のコードではビュー階層にビューを追加するものは何もありません。まず、UIApplicationDelegateサブクラスを持っていることを確認し、 "root" UIViewControllerクラスをロードする必要があります。 xcodeのすべての初期プロジェクト作成タイプがこれを行います(ウィンドウベースのアプリケーションを除く)。それは、次のようなコードされています。これが完了すると、あなたのビューコントローラは、NIB(上記に簡単に説明)によってロードされなかった場合は、お使いのloadViewメソッドは、独自のビュー階層を構築するために期待して、呼び出されます

[window addSubview:rootController.view]; 

。上記では、ビューを作成しましたが、ビューを階層に配置できませんでした。

[self.view addSubview:curImage.view]; 

ビュー階層に追加されるまで、ビューはレンダリングされません。ドキュメントのUIViewクラスを参照して、ビュー階層にビューを追加および削除するさまざまな方法を理解してください。

私はあなたに警告する必要があるいくつかの事柄: *あなたのコードは漏れています。客観的なCのプロパティーの仕組みを見直す必要があります。このサイトにはたくさんの情報があります。私はここで書く時間があります。 *ここにある場合はrootViewプロパティを作成しないでください。既にスーパークラス(UIViewController)に1つあります。それはちょうど「ビュー」です。これを使用してルートビューを保存します。

私はこれが始めるのを助けてくれることを願っています。最初は変態的になるかもしれませんが、すぐにそれが実現します! "本当の"アプリケーションを実行する前に、たくさんのサンプルコードをビルドして書き直し、再ビルドすることをお勧めします。 SDKには多くの素晴らしいサンプルがあります。

関連する問題