2009-03-05 11 views
1

Je suis nouveau sur le SDK iPhone et j'essaie de créer 3 vues et de basculer entre eux. Les données viendront d'un serveur et je vais essentiellement montrer 1 vue et mettre en cache les deux autres. Jusqu'à présent, j'essaie simplement de créer une vue et de l'afficher lors de l'exécution. Mon code est listé ci-dessous. Il ne montre qu'un écran vide et je pense qu'il me manque un concept clé. De l'aide?Vues iPhone au moment de l'exécution?

#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 

et

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

} 

et

#import <UIKit/UIKit.h> 


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

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


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

@end 

Répondre

2

Bienvenue sur le SDK iPhone!

En général, il existe deux manières d'afficher une vue. D'abord, et le plus souvent, vous utilisez un fichier NIB créé par Interface Builder. C'est généralement le moyen le plus facile de commencer et je le recommande pour ce que vous essayez de faire ici. Il est trop long de décrire toutes les étapes que vous devez faire pour ce que vous avez ici, mais fondamentalement commencer dans xcode en créant un nouveau fichier et en sélectionnant "interfaces utilisateur" et choisissez Voir XIB. Cela créera un fichier NIB de base (ils sont appelés NIB plutôt que XIB pour des raisons historiques). La première étape du constructeur d'interface consiste à changer le nom de classe du "propriétaire du fichier" en votre sous-classe UIViewController (Test5ViewController). Vous pouvez ensuite déposer tout ce que IB autorisera dans la fenêtre de vue ou même remplacer l'objet de vue pré-fourni par l'un des vôtres. Et voici l'astuce: assurez-vous que la prise de vue (fournie par la superclasse UIViewController) est connectée à une vue. Une fois cela fait, cette vue sera automatiquement chargée lorsque votre NIB est chargée. Vous pouvez ensuite mettre votre sous-classe UIViewController (Test5ViewController) dans votre fichier NIB MainWindow.xib pour obtenir chargé automatiquement, et vous êtes en affaires. Maintenant, la façon dont vous le faites ici est la deuxième façon. Certaines personnes aiment coder de cette façon tout le temps et pas le constructeur de l'interface utilisateur. Et même si c'est parfois nécessaire et toujours plus flexible, cela vous fait comprendre ce qui se passe un peu mieux. Il peut y avoir d'autres choses, mais la principale chose qui vous manque est que dans votre code ci-dessus, vous n'avez rien qui ajoute votre vue dans la hiérarchie de vue. Vous devez d'abord vérifier que vous avez une sous-classe UIApplicationDelegate et qu'elle doit charger votre classe UIViewController "root". Tous les types de création de projet initiaux dans xcode le font (sauf l'application basée sur Windows). Il est code comme:

[window addSubview:rootController.view]; 

Une fois cela fait, si votre contrôleur de vue n'a pas été chargé par le NIB (décrit brièvement ci-dessus), votre méthode de loadview sera appelée, vous attend à construire votre propre hiérarchie de la vue. Ci-dessus, vous avez créé la ou les vues, mais vous n'avez pas réussi à les hiérarchiser. Vous avez besoin de quelque chose comme:

[self.view addSubview:curImage.view]; 

Aucune vue ne sera restituée tant qu'elle n'aura pas été ajoutée à la hiérarchie d'affichage. Assurez-vous de rechercher la classe UIView dans la documentation et de comprendre la diversité des façons d'ajouter et de supprimer des vues dans la hiérarchie de vue.

Quelques choses dont je devrais vous avertir: * votre code ci-dessus fuit. Vous devez revoir comment fonctionnent les propriétés objectives-C. Il y a beaucoup sur ce site à ce sujet. Plus que j'ai le temps d'écrire ici. * ne crée pas une propriété rootView dans le cas présent. Il y en a déjà un dans la superclasse (UIViewController). C'est juste 'voir'. Utilisez-le pour enregistrer votre vue racine.

J'espère que cela vous aidera à démarrer. Cela peut être déconcertant au début, mais vous le ferez bientôt! Je recommande de construire et de réécrire et de reconstruire beaucoup d'exemples de code avant de faire votre "vraie" application. Le SDK a beaucoup d'excellents échantillons.

Questions connexes