Secondo Apple's Developer Documentation, è possibile utilizzare costruito in popovers su OS X con il built-in classe NSPopover:
partire in OS X v10.7, AppKit fornisce il supporto per popovers attraverso il Classe NSPopover. Un popover fornisce un mezzo per visualizzare contenuti aggiuntivi relativi ai contenuti esistenti sullo schermo. La vista che contiene il contenuto esistente, da cui deriva il popover, viene indicata in questo contesto come una vista di posizionamento. Si usa un'ancora per esprimere la relazione tra un popover e la sua vista di posizionamento.
Ecco un collegamento allo NSPopover class. Puoi anche vedere un esempio di NSPopovers utilizzati nell'app Calendar (10.7+) e nell'app Safari (10.8+). L'immagine seguente raffigura un popover in app calendario (a sinistra) e Safari (a destra):
Ecco come impostare un NSPopover, è molto semplice e può essere fatto per lo più in Interface Builder .
- Aggiungi un oggetto NSPopover al tuo XIB nel generatore di interfacce. Questo creerà NSPopover e il suo controller di visualizzazione.
- Successivamente, trascinare un NSView personalizzato nel XIB tramite il generatore di interfacce. Questa sarà la vista per il controller della vista popover
- Personalizza la tua NSView con tutti i controlli necessari in popover
Nel file di intestazione (h) aggiungere le seguenti due righe di codice:
@property (assign) IBOutlet NSPopover *popover;
- (IBAction)showPopover:(id)sender;
Non dimenticare di collegare sia la presa che l'azione alla tua interfaccia.
- Nell'implementazione, sintetizzare il popover e aggiungere il metodo per
showPopover
Nel metodo showPopover
, aggiungere questa riga per mostrare la popover:
[[self popover] showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxYEdge];
E 'a voi per la figura fuori come liquidare il popover; perché che divertimento copia/incolla? È possibile farlo manualmente (suggerimento: provare a utilizzare close
) o modificare la proprietà behavior
e fare in modo che il sistema lo faccia (vedere la modifica seguente).
Buona fortuna, spero che questo aiuti!
Modifica
Come notato da David in his comment:
Un'altra possibilità per respingere la popover è quello di impostare il comportamento di Transient. Ciò consente all'utente di fare clic ovunque fuori dal popover per farlo scomparire
La proprietà di comportamento di un popover imposta come appare e scompare. Ci sono tre comportamenti:
NSPopoverBehaviorApplicationDefined
- (Default) La vostra applicazione deve chiudere la popover sé
NSPopoverBehaviorTransient
- La popover è chiuso quando qualsiasi elemento di interfaccia è interagito con al di fuori del popover
NSPopoverBehaviorSemitransient
- Il popover è chiuso quando qualsiasi elemento dell'interfaccia nella vista di presentazione del popover viene interagito con l'esterno del popover.
Maggiori informazioni su questo in Apple's Documentation.
fonte
2012-12-24 16:07:19
+1 per questo. Ha funzionato bene per me, ed è anche possibile portarlo su iPhone con qualche rinominazione. –
Grazie mille, lo controllerò e segnerò la tua risposta come accettata se funziona per me. – brutella
Funziona come un fascino;) – brutella