2012-01-30 7 views
2

Я пытаюсь сделать смелый стиль выбора строки в NSTableView без подсветкиСделать выбранную строку жирным шрифтом в NSTableView

я переключился подсветка выкл:

[myTable setSelectionHighlightStyle:NSTableViewSelectionHighlightStyleNone]; 

Однако у меня есть некоторые проблемы делает текст жирным в выбранной строке. Как я уже сказал, мне нужно изменить свойства источника NSTableView:

- (void) tableViewSelectionDidChange: (NSNotification *) notification 
{ 
    NSDictionary *boldFont = [NSDictionary dictionaryWithObject:[NSFont boldSystemFontOfSize:13.0] 
                 forKey:NSFontAttributeName]; 
    NSDictionary *normalFont = [NSDictionary dictionaryWithObject:[NSFont systemFontOfSize:13.0] 
                 forKey:NSFontAttributeName]; 

    for(MyClass *obj in tableSourceList) 
     obj.name = [[NSMutableAttributedString alloc] 
          initWithString:obj.name 
           attributes: normalFont]; 

    long row = [myTable selectedRow]; 
    MyClass objectAtSelectedRow = [tableSourceList objectAtIndex: row]; 
    objectAtSelectedRow.name = [[NSMutableAttributedString alloc] 
          initWithString:dr.dreamname 
           attributes: boldFont]; 
    [tableSourceList replaceObjectAtIndex:row withObject:objectAtSelectedRow]; 
} 

К сожалению, эффекта нет.

Как сделать текст в строке жирным шрифтом, если выбрано?

ответ

2

Вы можете попытаться достичь путем изменения ячейки таблицы, которая будет предоставляться в делегатом стола:

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { 
    // Maybe a test on the table column is recommanded if some cells should not be modified 
    NSIndexSet *selection = [aTableView selectedRowIndexes]; 
    if ([selection containsIndex:rowIndex]) { 
     [aCell setFont:[NSFont boldSystemFontOfSize:12]]; 
    } else { 
     [aCell setFont:[NSFont systemFontOfSize:12]]; 
    } 
} 
+0

Этот код почти правильно, но текст становится жирным шрифтом только в одной колонке. Что вы имели в виду, когда писали «тест на столбец таблицы»? –

+0

Можете ли вы добавить журнал, чтобы проверить, вызван ли метод делегата дважды в строке? –

+0

Я добавил 'NSLog ([NSString stringWithFormat: @"% d ", rowIndex]);' Результат: '0 0 1 1 2 2' (этот фрагмент повторяется несколько раз). В таблице есть три строки. –

Смежные вопросы