Mam NSSegmentedControl na moim interfejsie użytkownika za pomocą 4 przycisków. Sterowanie jest podłączony do metody, która będzie wywołać różne sposoby w zależności od segmentu kliknięciu:Pokaż menu NSSegmentedControl po kliknięciu segmentu, pomimo ustawienia akcji
- (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;
}
}
Segment 4 posiada posiada menu z nim związane w sposobie awakeFromNib. Chciałbym, aby to menu było rozwijane, gdy użytkownik kliknie segment. W tym momencie spadnie on tylko wtedy, gdy użytkownik kliknie w menu przytrzymanie klawisza &. Z moich badań online wynika to z połączonej akcji.
Obecnie pracuję nad nim za pomocą kodu, aby uzyskać punkt początkowy kontroli segmentu i pojawia się menu kontekstowe za pomocą NSMenu's popUpContextMenu:withEvent:forView
, ale jest to dość hacktastic i wygląda źle w porównaniu do standardowego zachowania o menu opuść się poniżej podzielonej na segmenty komórki kontrolnej.
Czy istnieje sposób, aby menu było rozwijane tak, jak powinno po pojedynczym kliknięciu, zamiast robić coś z hacky menu kontekstowego?
W 10.10.2/Xcode 6.3 standardowe zachowanie menu jest zmniejszane, gdy użytkownik kliknie segment, do którego nie dołączono żadnej akcji; i wymagać kliknięcia i przytrzymania, gdy segment ma IBAction. Ponieważ twoje działanie to "menu pokazu", powinieneś móc je usunąć. –
Jak dołączyć działania do poszczególnych segmentów? –