я должен реализовать NSMenuItem таким образом, что выбранный NSMenuItem должен иметь жирный текст, это то, что я сделал,NSMenuItem переключения полужирный стиль шрифта
@implementation NSMenuItem (Font)
-(void)setBoldStyle:(bool)bBold{
NSString* title = [self title] ;
NSFont *pFont = (bold)?[NSFont boldSystemFontOfSize:14]:[NSFont menuFontOfSize:12];
NSDictionary* fontAttribute = [NSDictionary dictionaryWithObjectsAndKeys:
pFont, NSFontAttributeName,
nil] ;
NSMutableAttributedString* newTitle = [[NSMutableAttributedString alloc] initWithString:title
attributes:fontAttribute] ;
[self setAttributedTitle:newTitle] ;
[newTitle release] ;
}
@end
С Над peiece кода, я могу установить полужирным шрифтом, когда выбран конкретный NSMenuItem, , но если он должен быть переключен (означает, что если элемент был выделен полужирным шрифтом ранее, он должен быть нормальным сейчас), то его не происходит,
Так я его называю ,
// have we selected any menuitem yet
if (prevStatusIndex >0){
// then deselect it
pTempMenuItem = [pMenu itemAtIndex:prevStatusIndex];
[pTempMenuItem setBoldStyle:NO];
}
prevStatusIndex = clientStatus+1;
pTempMenuItem = [pMenu itemAtIndex:prevStatusIndex]; // 1 because a separator added
[pTempMenuItem setBoldStyle:YES];
Любая идея, что происходит не так?
Похоже, вы пытаетесь получить только один элемент, выбранный из группы - выберите элемент, и предыдущий выбор должен быть отменен. С первого взгляда ваш 'setBoldStyle' выглядит нормально, но второй блок кода недостаточно отображен. Логика выглядит правильно - если предыдущий выбор отменил ее выбор, выберите новый выбор. Вы уверены, что 'if' оценивает' YES', когда был предыдущий выбор? HTH – CRD
@CRD: Я проверил его :(, если я поместил некоторый журнал, он выглядит с помощью правильного указателя NSMenuItem – Amitg2k12
Установили ли вы точку останова на setBoldStyle? Проверьте жирный шрифт (предположим, bBold - это опечатка выше - если это не так, и вы также есть экземпляр var bold ...), шаг за шагом, выбирает правильный шрифт? И т.д. – CRD