2011-02-17 36 views
4

我將NSAttributedString插入到NSTableView中,並根據它的內容將屬性添加到其樣式字典中。NSAttributedString刪除線不會繪製整個文本的長度

- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { 


NSAttributedString *theValue; 
NSMutableDictionary *attributes = [[NSMutableDictionary alloc] init]; 
[attributes setObject:[NSFont systemFontOfSize:11] forKey:NSFontAttributeName]; 
currentObject = [ticketsDataSource objectAtIndex:rowIndex]; 

if ([[currentObject valueForKey:aTableColumn.identifier] isKindOfClass:([NSString class])]) { 

    NSString *currentValue = [currentObject valueForKey:aTableColumn.identifier]; 

    if ([currentValue isEqualToString:@"resolved"]) { 

     [attributes setObject:[NSColor colorWithCalibratedRed:0.344 green:0.619 blue:0.000 alpha:1.000] forKey:NSForegroundColorAttributeName]; 

    } 

    if ([previousValue isEqualToString:@"resolved"]) { 

     [attributes setObject:[NSNumber numberWithInteger:NSUnderlinePatternSolid | NSUnderlineStyleSingle] forKey:NSStrikethroughStyleAttributeName]; 
    } 

    theValue = [[NSAttributedString alloc] initWithString:currentValue attributes:attributes]; 
    previousValue = currentValue; 

} 

正如你所看到的,基本上會發生什麼是當它寫了一個名爲「解決」字符串,它知道第二天列,這是標題列,得到了刪除線。它工作得很好,但無論出於何種原因,刪除線不會覆蓋整個文本!

這裏是一個形象:

enter image description here

這到底是怎麼回事?

回答

2

還有另一個古怪的層次支持。所以我把它關掉:(