Кнопка NSPopUp не выбрана правильно
Я использую этот код, чтобы добавить всплывающую кнопку NSView
:
if (popupButton) [popupButton release];
popupButton = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(0, 0, SHEET_WIDTH/2, 32) pullsDown:true];
NSMenu *menu = [[NSMenu alloc] init];
for (NSString *title in anArray)
[menu addItemWithTitle:title action:NULL keyEquivalent:@""];
[popupButton setMenu:menu];
[self addView:popupButton aligned:KOAlignmentCenter];
Когда я запускаю свое приложение, кнопка не имеет выбора. Когда пользователь нажимает на него и выбирает один из элементов, кнопка остается пустой. Например, если есть 3 возможных выбора (item1, item2 и item3), и пользователь нажимает второй, вместо того, чтобы показывать item2, он ничего не показывает:
1 ответ
Я не знаю, почему у вас ничего не появляется, потому что, когда я попробовал ваш код, у меня действительно появился первый элемент в массиве ArArray. Тем не менее, выбор элемента из списка не меняет того, что отображается, и это ожидаемое поведение для кнопки типа раскрывающегося списка. Из документов Apple:
Выпадающие списки, как правило, отображаются рядом с всплывающей кнопкой так же, как подменю отображается рядом с родительским элементом. В отличие от всплывающих списков, заголовок всплывающей кнопки, отображающей раскрывающийся список, не основан на текущем выбранном элементе и, таким образом, остается фиксированным, если вы не измените его с помощью метода setTitle: ячейки.
Вам также не нужен ни один из операторов меню, вы можете просто использовать метод NSPopupButton addItemWithTitle:, в вашем цикле. Так что попробуйте это без команд меню, и используйте setTitle: явно, если вы все еще не получаете ничего, что первоначально показывалось. Или вы можете перейти к всплывающему окну вместо раскрывающегося списка, тогда у вас не будет проблем с установкой заголовка.
Вот что я сделал, чтобы проверить:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSArray *anArray = @[@"One",@"Two",@"Three",@"Four"];
_popupButton = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(100, 200, 200, 32) pullsDown:TRUE];
for (NSString *title in anArray)
[_popupButton addItemWithTitle:title];
[self.window.contentView addSubview:_popupButton];
}