2011-08-02 3 views
0

J'écris ma première application iPhone coupable. Mon écran de connexion est prêt. J'ai implémenté une vue dans mon MainWindow pour les informations d'identification de connexion et j'ajoute toute l'interface utilisateur à la vue (zones de texte, etc.).iOS: Débutant Aide pour ma première application: Changer de vue?

Maintenant quoi?

Je veux vérifier mes informations d'identification et si tout va bien, je vais tuer la vue de connexion de la fenêtre principale et montrer la vue principale avec toutes les informations.

Comment faire? Puis-je facilement ajouter l'événement-bouton dans le loginviewcontroller, vérifier le logindata là-bas et accéder à la fenêtre principale et tuer à partir de là sur la vue elle-même sans problèmes? Ou dois-je déclarer l'événement-bouton de la vue dans la fenêtre principale et y faire toutes les choses?

Mon code:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil andDelegate:(id)delegate 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
     UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     button.frame = CGRectMake(self.view.frame.size.width/2 - 55.0f, self.view.frame.size.height/2 + 85.0f 
           , 110.0f, 35.0f); 
     [button setTitle:@"title" forState:UIControlStateNormal]; 
     [button addTarget:delegate action:@selector(yourMethodInMainWindow:) forControlEvents: UIControlEventTouchDown]; 
     [self.view addSubview:button]; 
    } 
    return self; 
} 
+0

essayez le code édité maintenant @kovu et lisez le commentaire d'édition pour voir ce que vous avez mal fait. aussi s'il vous plaît formater votre code la prochaine fois c'est facile, je suppose que vous savez comment, puisque vous avez 1588 rep-points. s'il vous plaît accepter la réponse et +1 si cela fonctionne :) –

Répondre

1

dans votre viewcontroller:

//maybe you will need to have more arguments added to you init method 
//for instance you might be using -(id)initWithNibName:bundle: right now 
//then just add delegate to it like -(id)initWithNibName:bundle:andDelegate: 
//just to clarify: delegate = reference to class you want to call a method in 
-(id)initMethod:(id)delegate { 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    self.button.frame = CGRectMake(self.view.frame.size.width/2 - 55.0f, self.view.frame.size.height/2 + 85.0f 
            , 110.0f, 35.0f); 
    [button setTitle:@"title" forState:UIControlStateNormal]; 
    [button addTarget:delegate action:@selector(yourMethodInMainWindow:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:button]; 

} 

en classe avec mainWindow:

-(void)yourMethodInMainWindow:(id)sender { 
    //do whatever you want to do. 
} 

qui est une façon de le configurer par programme. Si vous utilisez nib alors vous définissez une méthode dans votre fichier .h och tapez - (IBAction)buttonClicked:(id)sender puis connectez-les dans le constructeur de l'interface.

Je suppose que vous savez comment pousser une nouvelle vue. pourrait être fait avec par exemple presentModalViewController:animated:. tout cela est déjà sur stackoverflow et google. La réponse here pourrait vous dire ce que vous devez savoir sur l'accès à la UIApplication et, par conséquent, sur la fenêtre.

+0

Salut, les choses que vous avez dit que je connaissais déjà. Le problème est, comment appeler une méthode dans la MainWindow à partir de la méthode Button qui est assis dans la vue? – Kovu

+0

comment passer la mainWindow en tant que 'delegate' à la vue et en l'utilisant comme ceci:' button addTarget: déléguer l'action: @selector (whatEverMethodInMainWindow :) forControlEvents: UIControlEventTouchUpInside]; ' –

+0

Je pense que c'est exactement ce que je cherchais, mais je ne comprends pas comment travailler avec ce code. Pouvez-vous faire un petit exemple/comment dans votre réponse? – Kovu

0

Vous devez utiliser le contrôleur de navigation pour la transformation entre les différents points de vue.

Tout d'abord, insérez un contrôleur de navigation dans le MainWindow.xib

Ensuite, la charge LoginViewController dans ce contrôleur de navigation. LoginviewController sera la vue dans laquelle votre identifiant de connexion et votre mot de passe ainsi que le login btn seront placés.

Maintenant, pour la connexion de l'action BTN, écrire une méthode,

- (IBAction) loginBtnPressed : (id) sender{ 

    MainViewController *newObject = [MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil]; 

    [self.navigationController pushViewController:newObject animated:YES]; 

} 

Après avoir écrit cette méthode, attacher simplement cette méthode pour la BTN dans votre fichier .xib dans le constructeur d'interface.