2009-03-05 59 views
1

我是新來的iPhone SDK,並試圖創建3個視圖,並在它們之間切換。數據將來自服務器,我將基本上顯示1個視圖並緩存另外兩個視圖。到目前爲止,我只是試圖創建一個視圖並在運行時顯示它。我的代碼列在下面。它只顯示一個空白屏幕,我想我錯過了一個關鍵概念。任何幫助?運行時的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!

通常,有兩種方法可以顯示任何視圖。

首先,最常用的是使用Interface Builder創建的NIB文件。這通常是開始的最簡單的方式,我會爲您在此嘗試的內容推薦它。描述你需要做的所有步驟太冗長了,但基本上從xcode開始創建一個新文件並選擇「用戶界面」並選擇View XIB。這將創建一個基本的NIB文件(由於歷史原因,它們被稱爲NIB而不是XIB)。接口構建器的第一步是將「文件所有者」的類名稱更改爲您的UIViewController子類(Test5ViewController)。然後,您可以刪除IB允許的任何內容到視圖窗口中,甚至可以用您自己的視圖對象替換預先提供的視圖對象。這裏的技巧:確保視圖插座(由UIViewController超類提供)連接到視圖。一旦完成,這個視圖將在您的NIB加載時自動加載。然後,您可以將您的UIViewController子類(Test5ViewController)放入您的MainWindow.xib NIB文件中,以便自動加載,並且您處於業務中。

現在,你在這裏做的方式是第二種方式。有些人總是喜歡用這種方式進行編碼,而不是用戶界面構建器。儘管有時候這絕對是必要的,並且總是更加靈活,但它會讓你更好地理解發生的事情。可能還有其他的東西,但是你缺少的主要是在你的代碼中,你沒有任何東西將視圖添加到視圖層次結構中。你首先需要檢查你有一個UIApplicationDelegate子類,它需要加載你的「根」UIViewController類。 xcode中的所有初始項目創建類型都是這樣做的(基於Window的應用程序除外)。這就像代碼:

[window addSubview:rootController.view]; 

一旦做到這一點,如果你的視圖控制器不是由NIB(以上簡述)加載,你的loadView方法會被調用,並期望你建立你自己的視圖層次。在上面,您創建了視圖,但未能將它們放入層次結構中。你需要類似的東西:

[self.view addSubview:curImage.view]; 

直到添加到視圖層次結構纔會呈現視圖。確保在文檔中查找UIView類,並瞭解添加和刪除視圖到視圖層次結構的各種方法。

一些事情我應該警告你: *你的代碼上面漏了。您需要查看Objective-C屬性的工作方式。這個網站上有很多關於它的內容。比我有時間在這裏寫更多。 *不要在這裏創建rootView屬性。超類中已經有一個(UIViewController)。這只是'觀點'。用它來保存你的根視圖。

我希望這可以幫助您開始。起初它可能令人困惑,但你很快就會發生!我建議在做「真實」應用程序之前建立並重寫和重新構建大量示例代碼。 SDK有很多很棒的示例。