2010-12-08 12 views
0

Je n'arrive pas à charger l'affichage suivant en appuyant sur le bouton. J'ai créé un bouton et attaché l'action checkButtonPress au bouton dans le IB. Mais lorsque j'appuie sur le bouton du simulateur, la vue suivante (ViewOne.xib) ne se charge pas. Quand j'ai essayé de déboguer le code; il imprime le NSLog (@ "View One") écrit dans l'instruction if ci-dessous, ce qui signifie que le code atteint ce point mais que la vue suivante ne se charge pas. J'ai déjà créé les fichiers ViewOne .h, .m .xib. Voici le code écrit dans le fichier de mise en œuvre check1ViewController.m:Impossible de charger la vue sur le bouton appuyez sur iPhone

#import "check1ViewController.h" 
#import "ViewOne.h" 

@implementation check1ViewController 

-(IBAction) checkButtonPress: (id) sender{ 
    int button = [sender tag]; 

if(button==1) 
{ 
    NSLog(@"View One"); 
    ViewOne *tempObj = [[ViewOne alloc]initWithNibName:@"ViewOne" bundle:nil]; 
    [self.navigationController pushViewController:tempObj animated:YES]; 
    [tempObj release]; 


} 
else if(button==2) 
{ 
    NSLog(@"View Two"); 
} 
    } 

/* 
// The designated initializer. Override to perform setup that is required before the  view is loaded. 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { 
     // Custom initialization 
    } 
    return self; 
} 
*/ 

/* 
// Implement loadView to create a view hierarchy programmatically, without using a nib. 
- (void)loadView { 
    } 
*/ 


/* 
// Implement viewDidLoad to do additional setup after loading the view, typically from a  nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
} 
*/ 



- (void)dealloc { 
    [super dealloc]; 
} 

@end 

Le code fonctionne très bien sans erreurs ou des avertissements.

Toute suggestion si je manque une partie de l'IB ou dans le code à écrire ou avez besoin de passer outre toute méthode dans l'un des fichiers ... ou ai-je égarez IBAction avant toute autre méthode

Désolé mais je suis nouveau sur iPhone dev donc pas sûr de ce que j'ai fait de mal?

Merci à l'avance

+1

Avez-vous configuré le contrôleur de navigation correctement? vérifier si elle n'est pas nulle à cet endroit – Vladimir

+0

J'ai choisi le modèle basé sur la fenêtre lors de la création du projet et la méthode checkButtonPress mentionnée ci-dessus - (IBAction) est le seul code écrit ... pour charger la vue suivante attendue. Désolé ... je me demandais si je manquais quelque chose – Prazi

Répondre

0

application Vous est de ne pas avoir contrôleur de navigation afin d'ajouter à côté vue sur la fenêtre pour cet objet de faire classe AppDelegate et puis accéder à la fenêtre à addView.

YourAppDelegate *obj=(YourAppDelegate *)[[UIApplication sharedApplication] delegate]; 

[obj.window addSubView:viewController.view]; 
+0

Merci pour votre réponse rapide. Mais ... désolé mais je n'ai pas eu ce que vous essayez d'expliquer car je suis encore un débutant dans l'application iPhone dev. Si possible, veuillez écrire un code d'application simple où vous avez deux vues. Lorsque l'application démarre, la vue principale est chargée et sur cette vue principale, il y a un bouton. lorsque vous appuyez sur le bouton, la vue suivante est chargée. S'il vous plaît suggérer comment écrire cette application dans le projet de modèle basé sur la fenêtre et en utilisant Interface Builder et quelles connexions à faire dans chaque fichier .xib dans IB pour charger la vue suivante ... merci d'avance – Prazi

+0

Parce que votre application est basée sur la fenêtre. Il n'a pas de contrôleur de navigation qui ne peut pas utiliser [self.navigationController pushViewController: tempObj animé: YES]; cette ligne.ok mais votre besoin d'afficher d'autres vue donc à cet effet, vous pouvez ajouter votre vue sur la fenêtre. Maintenant, par défaut, la fenêtre est une propriété dans appDelegate class.thats pourquoi vous devez accéder à la propriété de la classe appDelegate (fenêtre) pour ajouter votre vue sur window.so dans ce but utilisez le code ci-dessus. également dans votre classe .m importer appDelegate.h fichier.Ok, essayez ceci. – Ishu

+0

Merci pour votre réponse. Je l'ai. Le problème est réglé en remplaçant le code ci-dessus avec le code suivant: \t if (bouton == 1) { \t \t \t NSLog (@ "View One"); \t \t ViewOne * tempObj = [[Affectation ViewOne] initWithNibName: nil bundle: nil]; [Self presentModalViewController: tempObj animé: YES];} Pouvez-vous expliquer à quoi sert presentModelViewController et comment cela fonctionne et quand l'utiliser. Aussi quelle est la différence entre presentModelViewController et pushViewController. Comment décider lequel et quand utiliser de l'un ou l'autre de cela. Merci d'avance – Prazi