0

(Note:. Question has been asked before, avec des résultats moins-que-concluante il y a plus d'un an Espérons que nous savons un peu plus maintenant et nous pouvons le résoudre?)Afficher NSPopover dans NSCollectionView?

Je suis en train de faire un affichage NSPopover sur une NSCollectionItem lorsque vous double-cliquez dessus. Mon NSCollectionView est configuré correctement et reçoit une entrée.

(Si je copier-coller le code à d'autres sous-classes NSView, il fonctionne très bien Il y a quelque chose avec NSCollectionView qui semble tout embrouiller..)

Le code:

BIECollectionViewItem. h

#import <Cocoa/Cocoa.h> 

@class BIEAppDelegate; 

@interface BIECollectionViewItem : NSView { 
    IBOutlet NSPopover *popover; 
} 

@end 

BIECollectionViewItem.m

#import "BIECollectionViewItem.h" 

@implementation BIECollectionViewItem 

- (id)initWithFrame:(NSRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code here. 
    } 

    return self; 
} 

- (void)drawRect:(NSRect)dirtyRect 
{ 
    // Drawing code here. 
} 

- (void)mouseDown:(NSEvent *)theEvent { 
    [super mouseDown: theEvent]; 
    if([theEvent clickCount] == 2){ 
     [popover showRelativeToRect: [self bounds] ofView: self preferredEdge: NSMaxYEdge]; 
    } 
} 

@end 

Si j'ajoute une instruction de journal dans l'événement mouseDown, je peux confirmer que l'événement est déclenché. Cependant, le NSPopover refuse d'apparaître!

Est-ce que quelqu'un sait comment faire apparaître un NSPopover sur un NSCollectionView?

+0

Où avez-vous '' alloc' et init' 'NSPopover'? – trojanfoe

+0

Je ne suis pas; Interface Builder gère cela pour moi. J'ai juste traîné un 'NSPopover' de la bibliothèque de l'IB. Il a ensuite créé automatiquement un objet 'NSPopover', un' NSViewController' (étiqueté "Popover View Controller"), et un 'NSView', qui contient les éléments d'interface que je veux voir apparaître dans le popover. Je l'ai testé dans la fenêtre principale, et tout cela fonctionne, mais quand je le mets dans 'NSCollectionView', il ne s'affiche pas. –

Répondre

0

Je ne sais pas si vous avez résolu ce problème, mais je l'ai déjà fait. J'ai récemment voulu afficher un NSPopOver par rapport à un NSTextField dans un NSCollectionViewItem. Je n'ai eu aucun problème, sauf à un moment où le paramètre relatifToRect: était incorrect, et le pop over ne s'affichait pas. Je l'utilise toujours même format lors de l'affichage d'un pop sur

NSView *someView; // defined elsewhere 
[MyPopOver showRelativeToRect:[someView bounds] ofView:someView preferredEdge:NSMaxXEdge]; 

Je ne peux que suggérer assurer que vous avez ces valeurs à droite, et ne vous ai pas fait une erreur stupide dans IB comme oublié une liaison ou connexion (90% des mes échecs).

Hope this helps votre problème