Ho un NSSegmentedControl sulla mia interfaccia utente con 4 pulsanti. Il controllo è collegato ad un metodo che chiamare metodi differenti a seconda del segmento viene cliccato:Mostra menu NSSegmentedControl quando il segmento ha fatto clic, nonostante abbia impostato l'azione
- (IBAction)performActionFromClick:(id)sender {
NSInteger selectedSegment = [sender selectedSegment];
NSInteger clickedSegmentTag = [[sender cell] tagForSegment:selectedSegment];
switch (clickedSegmentTag) {
case 0: [self showNewEventWindow:nil]; break;
case 1: [self showNewTaskWindow:nil]; break;
case 2: [self toggleTaskSplitView:nil]; break;
case 3: [self showGearMenu]; break;
}
}
Segmento 4 ha ha un menu collegato ad esso nel metodo awakeFromNib. Mi piacerebbe che questo menu scendesse quando l'utente fa clic sul segmento. A questo punto, scenderà solo se l'utente fa clic su & sul menu. Dalla mia ricerca online questo è dovuto all'azione connessa.
Attualmente sto lavorando attorno ad esso usando del codice per ottenere il punto di origine del controllo del segmento e facendo apparire il menu di contesto usando NSMenu popUpContextMenu:withEvent:forView
ma questo è piuttosto hacktastic e sembra male rispetto al comportamento standard di avere il menu scendi sotto la cella di controllo segmentata.
C'è un modo per fare in modo che il menu si abbassi come dovrebbe dopo un singolo clic piuttosto che fare la cosa del menu contestuale hacky?
In 10.10.2/Xcode 6.3 il comportamento standard per il menu è di cadere verso il basso quando l'utente seleziona un segmento che ha alcuna azione attaccato; e richiedere il click-and-hold quando il segmento ha un IBAction. Poiché la tua azione è "mostra menu" dovresti essere in grado di rimuoverla. –
Come si collegano le azioni ai singoli segmenti? –