2014-06-16 4 views
1

사용자 정의 NSTableCellView에 약간 문제가 있습니다.테이블 데이터로드시 사용자 정의 테이블 셀 뷰가 수정되지 않습니다

문제 : : 배열에서 데이터를로드하기 위해 모든 항목이 구성되어있는 테이블보기가 Nib에 있습니다. 지금은 괜찮습니다. 문제는 응용 프로그램에서 ((id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row 메서드를 사용하여) 뷰를 준비하는 동안 반환 된 뷰는 원하는대로 수정되지만 반환 할 수있는 뷰는 모두 볼 수 있지만 수정되지 않습니다. .

문제를 찾는데 도움이 될 것으로 기대합니다. 내 문제를 이해하는 데 도움이되는 몇 가지 물건을드립니다.

일부 이미지 당신이 볼 수있는

휴대 전에, 반환받을보기도 수정됩니다. 테이블 뷰에 표시

Cell before get returned

셀,이 경우, 사용자 정의보기가 수정되지 않습니다, 그것은 아무것도

Cell that everybody can see

코드를 내가 수정되지 않은 좋아하는 모양이다

내 맞춤 NSTableCellView 헤더 ... 테이블에 대한 뷰를 생성하기위한

@interface playlistQueueItemView : NSTableCellView 
@property (weak) IBOutlet NSButton *button; 
@property (strong) IBOutlet NSTextField *title; 
@property (strong) IBOutlet NSTextField *artist; 

- (void)setAllFromInitWithTitle:(NSString*)title artist:(NSString*)artist; 
@end 

방법 :

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { 
    playlistQueueItemView *cell = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self]; 
    NSDictionary* song = [[PlaylistQueue getQueue] getSongWithPos:(int) row]; 

    cell.artist.stringValue = song[@"artista"]; 
    cell.title.stringValue = song[@"titulo"]; 

    return cell; 
} 

한가지 더, 나는 TableViewPlayground라는 비트 애플의 샘플 프로젝트 중 하나를 따랐다.

감사합니다 : D

답변

1

당신은 - (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row을 무시하고 다음 뷰를 반환해야합니다.

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row에서 채울 값이있는 모델 개체를 반환 할 수 있습니다.

source

+0

감사 : D. 나는이 두 가지 방법의 차이점을 몰랐다. 이제 효과가있다. – melchor629