2011-11-15 21 views
8

Araç çubuğumda NSToolbarItem düğmesinden bir NSPopover göstermek istiyorum.
(yani düğmenin altında konumlandırılmıştır).NSToolbarItem düğmesinden NSPopover göster Düğme

İdeal olarak, düğmenin NSView numaralı anahtarını konumlandırmak için popover'a geçmek istiyorum.
Sorum şu: NSToolbarItem'un NSView'unu nasıl edinebilirim?

[toolbarbutton view] her zaman nil değerini döndürür.

cevap

2

Bu eylemi, NSToolbarItem numaralı NSButton numaralı telefondan (genel olarak her durumda yapmanız gereken, bölümlere ayrılmış denetimleri dikkate al, her segmentin kendi hedefine/eylemine sahip olduğu) doğrudan gönderebilirsin, ve bu da işe yarayacak.

+0

Teşekkürler - Bunu deneyeceğim. –

2

yerine IBAction göndericiden görünümü alma, araç çubuğu öğesine doğrudan bir IBOutlet bağlamak ve göreli bir görünüm elde etmek olduğunu kullanın: uygulamada

@property (weak) IBOutlet NSToolbarItem *theToolbarItem; 
@property (weak) IBOutlet NSPopover *thePopover; 

: Üstbilginiz dosyasında

popover göstermek için, dosya:

[self.thePopover showRelativeToRect:[[self.theToolbarItem view] bounds] ofView:[self.theToolbarItem view] preferredEdge:NSMinYEdge]; 

Bu aynı zamanda bir araç çubuğu öğesi içindeki menü öğesi seçimleri gelen pop-up göstermek için çalışacaktır. Yani

-(BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem { 
    BOOL enable = YES; 

    NSString *identifier = [toolbarItem itemIdentifier]; 

    // This does never get called because I am using a button inside a custom `NSToolbarItem` 
    if ([identifier isEqualToString:@"Popover"]) { 
     return [self someValidationMechanism]; 
    } 

    // For this the validation works when I am using a standard `NSToolbarItem` 
    else if ([identifier isEqualToString:@"StandardToolbarItem"]){ 
     return [self someOtherValidationMechanism]; 
    } 

    return enable; 
} 

: Ben Popover Stuart Tevendale bahsettiği yaklaşımı kullanarak gösterildi Bunu başarmak vermemekle birlikte ben NSToolbarDelegate kullanarak (etkin/devre dışı) NSToolbarItems doğrulamak çalıştığında

0

, ben sorunlarla vermedi NSToolbarItem'dan bir Popover görüntülememesini tavsiye ederim. Bir alternatif, bir Sayfa Sayfası'nı göstermek olabilir: How to show a NSPanel as a sheet