Nib Probléme

LastikoLastiko Membre
janvier 2009 modifié dans API UIKit #1
Bonjour ,

j'aurais besoin d'un petit coup de main pour débutant

j'ai une application qui a une vue (jusque la tout va bien ca marche ) par contre je voudrais avoir une autre vue qui gere un date picker
j'ai les fichiers dans mon projet ( le fichier nib s'appel ChangeDateView ) et j'ai aussi les .h et .m qui sont ajoutés avec un bouton ok pour revenir a la vue d'origine
ce que je n'arrive pas a faire c'est que sur la vue principale je voudrais allez a la vue ChangeDateView via un bouton DateChange mais je n'arrive pas a le faire

ca doit etre tout con mais je débute alors .....
j'ai regarder les tuto de philippe49 mais je pige pas le truc
:)beta:

Réponses

  • Philippe49Philippe49 Membre
    01:18 modifié #2
    Présenter une modal view ? les modal view viennent se glisser sur la vue en cours pour disparaà®tre ensuite quand on appuie sur un bouton


    Le UIViewController demandeur de la modal view possède une instance de ModalViewController, dont le nib est ModalView.xib, et une action lançant la présentation de cette vue  :
    -(IBAction) action:(id) sender {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />	if(!modalViewController)<br />		{<br />				modalViewController=[[ModalViewController alloc] initWithNibName:@&quot;ModalView&quot; bundle:nil];<br />		}<br />		<br />	[self presentModalViewController:modalViewController animated:YES];	<br />}<br />
    



    Un bouton de la modal view la fait disparaà®tre. (le parentViewController est la vue initiale)
    - (IBAction)dismiss:(id)sender{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // action de ModalViewController<br />	// Retirer la vue <br />	[self.parentViewController dismissModalViewControllerAnimated:YES];<br />}<br />
    

  • LastikoLastiko Membre
    01:18 modifié #3
    je peux t'envoyer mon projet car j'ai deja lu et relus tes exemples :(
  • Philippe49Philippe49 Membre
    01:18 modifié #4
    Ok, si tu veux.
  • LastikoLastiko Membre
    01:18 modifié #5
    merci c'est parti :P
  • Philippe49Philippe49 Membre
    01:18 modifié #6
    Dans le view controller principal (nom de code Fog)

    @class ChangeDateView;<br /><br />@interface ..... : UIViewController&lt;UIScrollViewDelegate , UIActionSheetDelegate &gt;{<br />	<br />	ChangeDateView * modalViewController;
    


    dans l'implémentation :

    -(IBAction)DateChange<br />{	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  <br />	if(!modalViewController)<br />		{<br />				modalViewController=[[ChangeDateViewalloc] initWithNibName:@&quot;ChangeDateView&quot; bundle:nil];<br />		}<br />		<br />	[self presentModalViewController:modalViewController animated:YES];	<br />}<br />}
    


    dans le nib ChangeDateView.xib , connecter le bouton Ok à  une méthode dismiss :

    - (IBAction)dismiss:(id)sender{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // action de ModalViewController<br />	// Retirer la vue <br />	[self.parentViewController dismissModalViewControllerAnimated:YES];<br />}
    


    rq le fichier ChangeDateView ferait mieux de s'appeler ChangeDateViewController ...
    Utiliser l'option de menu Edit > Refactor, cela devrait tout renommer 

  • LastikoLastiko Membre
    01:18 modifié #7
    merci philou je test :P
  • LastikoLastiko Membre
    01:18 modifié #8
    ca me mets 2 warning et ca plante l'appli :(

    -(IBAction)DateChange<br />{	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  <br />	if(!modalViewController)<br />		{<br />				modalViewController=[[ChangeDateView alloc] initWithNibName:@&quot;ChangeDateView&quot; bundle:nil];<br />		}<br />		<br />	[self presentModalViewController:modalViewController animated:YES];	<br />}<br />}
    



    modalViewController=[[ChangeDateView alloc] initWithNibName:@ChangeDateView bundle:nil];
    warning receiver ' ChangeDateView' is forward class and corresponding @Interface may not exist

    [self presentModalViewController:modalViewController animated:YES];
    warning passing argument 1 of 'presentModalViewController:animated' from distinct Objective-C type
  • Philippe49Philippe49 Membre
    janvier 2009 modifié #9
    Il faut mettre un #import "ChangeDateView.h" dans le .m (ou ChangeDateViewController.h si tu as fait le Refactor)
  • LastikoLastiko Membre
    01:18 modifié #10
    rajouter maitenant y a plus de warning mais ca charge une vue toute blanche

  • Philippe49Philippe49 Membre
    01:18 modifié #11
    Vérifie ton xib ChangeDateView.xib
    Si tu as fait refactor, cela nécessite peut-être quelques mises à  jour à  la main, voire jeter l'ancien xib pour en mettre un nouveau, ce qui peut-être le plus rapide.
  • LastikoLastiko Membre
    01:18 modifié #12
    Un Grand MERCI philou
  • LastikoLastiko Membre
    01:18 modifié #13
    par contre si je veux pas que ca soit une modalview  , je fais comment ?
  • Philippe49Philippe49 Membre
    01:18 modifié #14
    Soit tu utilises les UINavigationController, ou les UIScrollView (voir l'exemple PageControl), ou les UITabBarController, les solutions ne manquent pas ...

    et la solution à  la mano, tu la mets dessus la vue courante, ou à  la place de la vue courante :

    Managing the View Hierarchy (doc de UIView)
      superview  property 
      subviews  property 
      window  property 
    – addSubview: 
    – bringSubviewToFront: 
    – sendSubviewToBack: 
    – removeFromSuperview 
    – insertSubview:atIndex: 
    – insertSubview:aboveSubview: 
    – insertSubview:belowSubview: 
  • LastikoLastiko Membre
    01:18 modifié #15
    merci beaucoup
Connectez-vous ou Inscrivez-vous pour répondre.