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 件のコメント:
コメントを投稿