(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?
Où avez-vous '' alloc' et init' 'NSPopover'? – trojanfoe
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. –