2011-03-05 7 views
1

셀을 선택하면 NSTextFieldCell의 배경색을 변경하려고합니다. 선택시 NSTextFieldCell 배경색 변경

코드입니다 :

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView { 

    [super drawWithFrame:cellFrame inView:controlView]; 

    if([self isHighlighted]) { 
     [self setBackgroundColor:[NSColor whiteColor]]; 
    } 
} 

그러나 선택한 행은 항상 파란색입니다. 나는 무엇인가 놓치고 있습니까?

참고 : 이것은 iOS 응용 프로그램이 아닙니다.

미리 감사드립니다.

답변

5

이전에 생각했던 것처럼 쉽지 않습니다. NStableview에 몇 가지 문제가 있습니다. u는 같은 것을 사용하는 경우 :

[destinationsListForSaleTableView setSelectionHighlightStyle:NSTableViewSelectionHighlightStyleNone]; 

U 셀 지정하지 않은 경우 당신은

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex 
{ 
if ([[aTableView selectedRowIndexes] containsIndex:rowIndex]) { 
    [aCell setBackgroundColor: [NSColor colorWithDeviceRed:0.29 green:0.27 blue:0.42 alpha:1]]; 

} else [aCell setBackgroundColor: [NSColor colorWithDeviceRed:0.52 green:0.54 blue:0.70 alpha:1]]; 
[aCell setDrawsBackground:YES]; 

} 

이 충분해야한다. 높이와 실내를 바꿀 경우 더 복잡해야합니다.

원하는 스타일을 선택할 수 있습니다. 세포 서브 클래스에서 : 내가 작성의 크기를 변경하는 이유

-(NSColor *)highlightColorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView { 
return nil; 
//[NSColor colorWithDeviceRed:0.29 green:0.27 blue:0.42 alpha:1]; 
} 

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView 
{ 
if ([self isHighlighted]) { 
    [[NSColor colorWithDeviceRed:0.29 green:0.27 blue:0.42 alpha:1] set]; 
    cellFrame.origin.x -= 1; 
    cellFrame.origin.y -= 1; 
    cellFrame.size.height += 2; 
    cellFrame.size.width += 3; 

    NSRectFill(cellFrame); 

} 
[super drawWithFrame:cellFrame inView:controlView]; 
} 

당신은 나 한테 물어? Bcs 배경을 사용할 때 사과는 작은 상자를 남겨두고 다른 색을 사용합니다.

+0

감사합니다. setDrawsBackground : YES는 제가 누락되었습니다. – nebs

-1

그렇게하지 마십시오. 대신, -tableView : cellForRowAtIndexPath :에서 셀을 만들 때 셀의 "selectedBackgroundView"속성을 셀이 선택 될 때 배경이 될 뷰로 설정하십시오. 이것은 배경색을 가진 단순한 오래된 UIView 일 수 있습니다. + backgroundViewForTableCell :이라는 메서드가있는 UIView에 카테고리를 만들었습니다.이 클래스는 뷰를 인스턴스화하고 배경색을 원하는 색상으로 설정합니다.

cell.selectedBackgroundView = [UIView backgroundViewForTableCell:cell]; 

당신이 셀이 도청 될 때 수행 할 수 있습니다 다른 것은 셀에서 텍스트의 색상을 설정하는 것입니다 : 내가 셀을 만들 때 나는 이런 식으로 사용합니다. 배경색이 비교적 어두우면 텍스트 색상을 검정색에서 흰색으로 바꿀 수 있습니다.

+0

iOS 용으로 프로그래밍하지 않지만 감사합니다. 매우 유용합니다. :) – Donovan

+0

죄송합니다 - 더 자세히 읽었어야합니다. – Caleb