Controle breadcrumb

APAP Membre
14:09 modifié dans API AppKit #1
Hello,

Je cherche s'il existe déjà  un contrôle de type "breadcrumb" comme breadcrumb2.png mais en cocoa.
Merci d'avance pour vos pistes et liens :)

Réponses

  • AliGatorAliGator Membre, Modérateur
    14:09 modifié #2
    Je suis pas sûr de comprendre quel type de contrôle tu veux, mais ça ressemble à  un NSComboBox ou à  un NSPopupMenu non ?
  • APAP Membre
    14:09 modifié #3
    Je viens de trouver c'est un nspathcontrol.
    L'utilisez-vous et si oui est-il simple d'en personnaliser l'aspect (j'aimerais avoir un style comme la barre du haut de tweetie : 000603-tweetie-timeline.png )
  • APAP Membre
    14:09 modifié #4
    Au passage, si vous avez un controle ressemblant à  la barre d'icone de gauche, je suis aussi preneur :)

    Merci
  • 14:09 modifié #5
    J'ai fait ça dans Ecoute 2. Je pensais partir de NSPathControl mais c'est une mauvaise idée.
    L'idéal c'est de sous classer NSView et créer des cells
    Et bien sur faire un controller
  • APAP Membre
    14:09 modifié #6
    C'est vrai que le rendu que tu as dans Ecoute est assez proche de ce que je veux obtenir.
    Quand tu dis qu'il faut utiliser des cells et un controller, que veux-tu dire exactement?

    Merci
  • janvier 2011 modifié #7
    Voir le screen ci-dessous..

    Une cell est la représentation d'un UINavigationItem. Cell n'est pas le bon terme car c'est une sous-classe de NSView aussi.. et non NSCell.. Au début j'avais fait un test comme ça pour éviter de m'embêter avec ControlView+Cell... Je regrette.

    Un exemple de ECNavigation(Root)Item, qui sert à  ECNavigationBarCell.
    Là  encore c'est vraiment pas tip top, car j'ai fait un 'RootItem' qui permet de définir des sous-item (ECNavigationItem), afin d'afficher, eventuellement, un menu.
    <br />@interface ECNavigationRootItem : NSObject &lt;NSCopying&gt; {<br />	NSArray* items;<br />	ECNavigationItem* currentItem;<br /><br /><br />}<br />@property (nonatomic, retain) NSArray* items;<br />@property (nonatomic, retain) ECNavigationItem* currentItem;<br /><br /><br />// Pass nil to get the current item index<br />- (NSInteger)indexOfItem:(ECNavigationItem*)anItem;<br /><br />+ (ECNavigationRootItem*)rootItemWithItems:(NSArray*)someItems;<br />- (ECNavigationRootItem*)initWithItems:(NSArray*)someItem;<br />@end<br />
    

    Je dis que c'est pas tip-top car j'aurai pu faire un simple ECNavigationItem (pas de Root), et laisser à  chacun les propriétés 'items' et 'currentItem'.. ça pourrait aider à  faire un menu qui contient des items qui peuvent contenir eux aussi un menu avec des items etc.. etc... Une arborescence quoi... Mais ça n'était pas dans mes besoins.

    <br /><br />@interface ECNavigationItem : NSObject &lt;NSCopying&gt;{<br />	NSString* title;<br />	id linkedObject;<br />	<br />	<br /><br />}<br /><br />@property (nonatomic, retain) NSString* title;<br /><br /><br />/** The linked object attached to the navigation item. <br /> * Each navigation item should be linked to an object from your program.<br /> * In Ecoute, a navigation item that displays an album name is linked to a model object called &quot;Album&quot;, which contains a list of &quot;Song&quot; instances<br /> */<br />@property (nonatomic, retain) id linkedObject;<br /><br />/** Use this method to create a single navigation item<br /> * @param aTitle: The title that will be displayed in the navigation bar. Use nil if your &#39;linkedObject&#39; implements the &#39;-title&#39; method<br /> * @param aLinkedObject: The linked object to your navigation item (see linkedObject description)<br /> * @returns Autoreleased instance of ECNavigationItem <br /> */<br />+ (ECNavigationItem*)itemWithTitle:(NSString*)aTitle linkedToObject:(id)aLinkedObject;<br /><br />/** Use this method to create a single navigation item<br /> * @param aTitle: The title that will be displayed in the navigation bar. Use nil if your &#39;linkedObject&#39; implements the &#39;-title&#39; method<br /> * @param aLinkedObject: The linked object to your navigation item (see linkedObject description)<br /> * @returns Instance of ECNavigationItem <br /> */<br />- (ECNavigationItem*)initWithTitle:(NSString*)aTitle linkedToObject:(id)aLinkedObject;<br /><br />@end<br /><br />
    

    Chaque ECNavigationItem est lié à  une sous-classe de NSObject (linkedObject).
    le linkedObject, dans mon cas, sont des sous-classe de NSObject. Tous mes linkedObject sont en fait des 'models'.
    Par exemple, j'ai un model 'ECArtist' qui implémente différentes propriétés. Mais cette classe répond aussi à  '-title' afin de changer le nom du navigationItem. Il prendra ainsi le nom "Metallica" si linkedObject est un ECArtist qui représente l'artiste "Metallica".
    Bref, c'est pas super compliqué à  comprendre, ça fait parti du principe MVC et cie.

    Je pense qu'à  l'occasion il faudra juste que je fasse de vrais cellules et non pas des NSView.. Quoi que c'est sûrement moins chiant dans mon cas :p
  • APAP Membre
    14:09 modifié #8
    Merci d'avoir pris le temps de détailler tout cela. Connais-tu un bon tutorial sur les custom NSView avec Modème MCV et NSCell (création, layout, ...)

    Merci  :)
Connectez-vous ou Inscrivez-vous pour répondre.