NSTableViewをサイドパネルに表示できるようにした。
データソース関係はこんな感じ。
-(NSUInteger)numberOfRowsInTableView:(NSTableView*)aTableView{ return ([searchResults count]); } -(id)tableView:(NSTableView*)aTableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{ if([[tableColumn identifier] isEqualToString:@"page"]) return ([[[[searchResults objectAtIndex:row]pages] objectAtIndex:0] label]); else if ([[tableColumn identifier] isEqualToString:@"selection"]){ NSString *label=[[[pdfView document] outlineItemForSelection:[searchResults objectAtIndex:row]] label]; return label; } else return NULL; }デリゲートメソッドはこうなった。
- (void) tableViewSelectionDidChange: (NSNotification *) notification{ NSInteger rowIndex; // What was selected. Skip out if the row has not changed. rowIndex = [(NSTableView *)[notification object] selectedRow];// 1 if (rowIndex >= 0) { [pdfView setCurrentSelection: // 2 [searchResults objectAtIndex: rowIndex] animate:YES]; [pdfView scrollSelectionToVisible: self];// 3 } }
ほとんどデベロッパドキュメントの「Introduction to PDF Kit Programming Guide」にあった通りというかコピペというか。
これで無事にNSTableViewに検索結果を表示できるわけだが・・・
なぜスクロールバーが出てこないんだろう(^^;)ヘッダ行も表示されていない。表示はされていないけれど、↑キーとかを押すとちゃんと動作するので、
[[pdfView document] findString:[sender stringValue] withOptions:NSCaseInsensitiveSearch];
とやっているのが悪いのかも。デベロッパドキュメントの通り、beginFindString:withOptions:を使ったほうがいいのかな。これは明日以降だな。
0 件のコメント:
コメントを投稿