2009-03-05 17 views
1

Ich bin neu im iPhone SDK und versuche, 3 Ansichten zu erstellen und zwischen ihnen zu wechseln. Die Daten werden von einem Server kommen und ich werde im Prinzip eine Ansicht anzeigen und die anderen beiden zwischenspeichern. Bisher versuche ich nur eine Ansicht zu erstellen und sie zur Laufzeit anzuzeigen. Mein Code ist unten aufgeführt. Es zeigt nur einen leeren Bildschirm und ich denke, ich vermisse ein Schlüsselkonzept. Irgendeine Hilfe?iPhone Ansichten zur Laufzeit?

#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 

und

- (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; 

} 

und

#import <UIKit/UIKit.h> 


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

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


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

@end 

Antwort

2

Willkommen auf dem iPhone SDK!

Im Allgemeinen gibt es zwei Möglichkeiten, um eine Ansicht anzuzeigen.

Zuerst und am häufigsten verwenden Sie eine NIB-Datei, die vom Interface Builder erstellt wurde. Dies ist normalerweise der einfachste Weg, um loszulegen, und ich würde es für das, was Sie hier versuchen, empfehlen. Es ist zu lang, um alle Schritte zu beschreiben, die Sie für das, was Sie hier haben, zu tun haben, aber starten Sie im Grunde in xcode, indem Sie eine neue Datei erstellen und "Benutzeroberflächen" auswählen und View XIB auswählen. Dadurch wird eine grundlegende NIB-Datei erstellt (aus historischen Gründen werden sie NIBs anstelle von XIBs genannt). Der erste Schritt im Interface Builder besteht darin, den Klassennamen des "Dateieigentümers" in Ihre UIViewController-Unterklasse (Test5ViewController) zu ändern. Sie können dann alles, was IB erlauben wird, in das Ansichtsfenster fallen lassen oder sogar das vorinstallierte Ansichtsobjekt durch eines Ihrer eigenen ersetzen. Und hier ist der Trick: Stellen Sie sicher, dass der View-Ausgang (von der Superklasse UIViewController bereitgestellt) mit einer Ansicht verbunden ist. Sobald dies erledigt ist, wird diese Ansicht automatisch geladen, wenn Ihre NIB geladen wird. Sie können dann einfach Ihre UIViewController-Unterklasse (Test5ViewController) in Ihre MainWindow.xib NIB-Datei setzen, um it automatisch geladen zu bekommen, und Sie sind im Geschäft.

Jetzt ist die Art, wie Sie es hier tun, der zweite Weg. Manche Leute codieren immer so und nicht den User Interface Builder. Und obwohl es manchmal notwendig und immer flexibler ist, lässt es sich besser verstehen. Es kann andere Dinge geben, aber die Hauptsache, die Ihnen fehlt, ist, dass Sie in Ihrem obigen Code nichts haben, was Ihre Ansicht in die Ansichtshierarchie einfügt. Sie müssen zuerst überprüfen, ob Sie eine UIApplicationDelegate-Unterklasse haben und die UIViewController-Klasse "root" laden muss. Alle anfänglichen Projekterstellungstypen in xcode machen dies (außer Windows-basierte Anwendung). Es ist Code wie:

[window addSubview:rootController.view]; 

Sobald dies erledigt ist, wenn Ihr View-Controller nicht von der NIB (oben kurz beschriebenen), Ihr Loadview-Methode wird aufgerufen, geladen wurde, können Sie erwarten Ihre eigene Sicht Hierarchie aufzubauen. Oben haben Sie die Ansicht (en) erstellt, konnten diese jedoch nicht in eine Hierarchie einfügen. Sie müssen so etwas wie:

[self.view addSubview:curImage.view]; 

wird keine Aussicht, bis zu der Ansicht Hierarchie hinzugefügt gerendert werden. Stellen Sie sicher, dass Sie die UIView-Klasse in der Dokumentation nachschlagen und die verschiedenen Möglichkeiten zum Hinzufügen und Entfernen von Ansichten zur Ansichtshierarchie kennen.

Ein paar Dinge, vor denen ich Sie warnen sollte: * Ihr Code oben ist undicht. Sie müssen überprüfen, wie objektive C-Eigenschaften funktionieren. Es gibt viele auf dieser Seite darüber. Mehr als ich Zeit habe hier zu schreiben. * Erstellen Sie keine RootView-Eigenschaft, falls Sie hier sind. Es gibt bereits eins in der Oberklasse (UIViewController). Es ist nur 'Sicht'. Verwenden Sie das zum Speichern Ihrer Stammansicht.

Ich hoffe, das hilft Ihnen den Einstieg. Es kann zunächst verwirrend sein, aber Sie werden es bald in Gang bringen! Ich empfehle, eine Menge Beispielcode zu erstellen, neu zu schreiben und neu zu erstellen, bevor Sie Ihre "echte" Anwendung ausführen. Das SDK hat viele gute Beispiele.