UINavigationController

JekarJekar Membre
01:57 modifié dans API UIKit #1
Bonjour,

Y a t il une difference a construire une bar de navigation avec du code, ou par IB? Quels sont les avantages inconvénient?

// Create a navigation controller <br />navController = [[UINavigationController alloc] init]; <br />// Push the first view controller on the stack <br />[navController pushViewController:firstViewController <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; animated:NO]; <br />// Add the navigation controller's view to the window <br />[window addSubview:navController.view];


Merci

Réponses

  • Philippe49Philippe49 Membre
    01:57 modifié #2
    dans 1225789145:

    Y a t il une difference a construire une bar de navigation avec du code, ou par IB? Quels sont les avantages inconvénient?


    Plus généralement, il faut avoir de la lisibilité entre les nib et le projet : des nib surchargés ne sont pas forcément plus clairs qu'un code bien structuré. Une multiplication des nibs nécessitent de les charger dans le code uniquement lorsque c'est nécessaire, et non tous en début de programme.
  • JekarJekar Membre
    01:57 modifié #3
    Bon, j y arrive pas la.
    Je joins mon projet. Je voudrais juste qu en appuyant sur le bouton sur le view1.xib on arrive sur le view2.xib


    Merci
  • Philippe49Philippe49 Membre
    01:57 modifié #4
    Voir push view controller pour comparer.

    Je ne vois pas directement dans ce que tu as envoyé où est le mic-mac. (au passage, ne met ps le build dans tes envois, cela pèse lourd inutilement pour le serveur)
  • JekarJekar Membre
    01:57 modifié #5
    Noté pour le build.

    Que dois je mettre dans la methode "show" pour afficher ma 2 vue (View2) ?
  • JekarJekar Membre
    01:57 modifié #6
    J'ai reussi.

    <br />#import &quot;View1Controller.h&quot;<br />#import &quot;View2Controller.h&quot;<br /><br />@implementation View1Controller<br />- (IBAction)Show {<br />&nbsp; &nbsp; NSLog(@&quot;show&quot;);<br />	View2Controller *myViewController = [[View2Controller alloc] initWithNibName:@&quot;View2&quot; bundle:nil];<br />	//navController = [[UINavigationController alloc] init]; <br />	[[self navigationController] pushViewController:myViewController&nbsp; animated:YES]; <br />	<br />}<br />@end
    


    Mais je ne comprend pas le [self navigationController] , comment trouve t il le controller créé dans l'appdelegate.m ?
  • JekarJekar Membre
    01:57 modifié #8
    Ha oué, faut le savoir :)

    Merci
  • JekarJekar Membre
    01:57 modifié #9
    encore une question:
    ca sert a quoi : "@property (nonatomic, retain) IBOutlet ..." ????
    Des fois on le voit, d autre non.

    Pour une propriété j ai bien compris a quoi servait le @property et @synthetise , pour avoir acces via le Getter et setter. Mias pour un outlet ca sert a quoi?

    Merci
  • Philippe49Philippe49 Membre
    01:57 modifié #10
    Bonne question !    :o
    Peut-être des éléments de réponse :
    1) Le mot clé IBOutlet ne sert que pour la communication/synchronisation entre XCode et Interface Builder. Donc en soi une property avec IBoutlet est identique à  une property sans ce mot clé.
    2) Certaines variables déclarés pour IB comme IBOutlet sont susceptibles de changement lors de l'exécution, comme viewCOntroller.view par exemple pour les transitions.
    3) Quelle est la différence entre
    {
      IBOutlet UIView * view;
    }
    @property (nonatomic,retain) UIView * view;

    et
    {
      UIView * view;
    }
    @property (nonatomic,retain) IBOutlet UIView * view;


    je ne vois pas ?
  • JekarJekar Membre
    01:57 modifié #11
    Vui, mais @property (nonatomic,retain) sert a quoi pour un outlet?
  • Philippe49Philippe49 Membre
    novembre 2008 modifié #12
    A la même chose que pour une autre variable.

    Un objet créé lors du désarchivage du nib possède un retainCount non infini, justifiant dès lors le mécanisme retain/release. Tous les exemples pour iPhone sont avec retain ...

    Quand à  nonatomic, c'est la pose ou non de verrou lors de l'exécution du getter : voici l'exemple de la doc correspondant à  ce qui est fait lorsque nonatomic n'est pas mis :
      [_internal lock]; // lock using an object-level lock
      id result = [[value retain] autorelease];
      [_internal unlock];
      return result;

Connectez-vous ou Inscrivez-vous pour répondre.