Je veux montrer un Idéalement, je veux transmettre le nspoppover code> à partir d'un bouton
nstoolbaritem code> dans ma barre d'outils.
(c'est-à-dire positionné sous le bouton). P>
Nsview code> du bouton sur la Popover pour la positionner.
Ma question est, comment puis-je obtenir le Nsview code> du
NSToolBaritem code>? P>
[VUE DE TOOLBARBUTTON] CODE> retourne toujours nul. p>
4 Réponses :
La réponse semble être dans la vidéo de la Session WWDC 2011 113, "Changements d'écran complet et Aqua". Fondamentalement, mettez un nsbutton à l'intérieur du NSTOOLBARITEM et utilisez la vue de cela. P>
Un poteau de blog est ici: http://www.yellowfield.co.uk / blog /? p = 33 et un exemple de projet est sur GitHub chez http://github.com / Tevendale / Toolbarpover P>
Tout dans le sprit de http://xkcd.com/979 ! p>
Vous pouvez envoyer l'action directement à partir du nsbutton code> ci-joint dans le
NSToolBaritem code> (ce que vous devez généralement faire de toute façon, en tenant compte des contrôles segmentés, où chaque segment a sa propre cible / action), et cela fera le tour. p>
Merci - je vais essayer ça un essai.
Au lieu d'obtenir la vue à partir de l'expéditeur Ibaction, connectez directement une iboutlet directement à l'élément de la barre d'outils et utilisez-le pour obtenir la vue relative:
Dans votre fichier d'en-tête: P>
[self.thePopover showRelativeToRect:[[self.theToolbarItem view] bounds] ofView:[self.theToolbarItem view] preferredEdge:NSMinYEdge];
Bien que j'ai réussi à ce que le Popover ait été montré à l'aide de l'approche mentionnée par Stuart Tevendale, j'ai rencontré des problèmes lorsque j'ai essayé de valider (activer / désactiver) le nstolbaritems code> à l'aide du
NstoolBardélégate CODE>:
-(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;
}