NSTableView の cell にテキスト以外の値を設定する

231 views
Skip to first unread message

overisland

unread,
Nov 4, 2009, 12:10:11 AM11/4/09
to cocoa-dev-japan
Cocoaの勉強をはじめて間もない者です。

NSTableView のセルにテキストを設定するには、データソースを実装し、設定したいテキストの値を返せば良いことが分かりました。

問題は、セルに画像などを設定する場合です。InterfaceBuilder でカラムを NSImageCell に設定し、

if ([tableColumn identifier]==@"hoge"){

return [[ NSImage alloc ] initWithContentsOfFile: [[ NSBundle
mainBundle ] pathForResource:@"hoge" ofType:@"png"]];

}

のように NSImage の値を返してみましたが、画像が表示されませんでした。

画像を表示する場合は、わざわざアウトレットを作って、 setImage: などのメソッドを呼び出すしかないのでしょうか?

よろしくお願いします。

kawana

unread,
Nov 4, 2009, 10:40:19 AM11/4/09
to cocoa-d...@googlegroups.com
> 問題は、セルに画像などを設定する場合です。InterfaceBuilder でカラムを NSImageCell に設定し、
>
> if ([tableColumn identifier]==@"hoge"){
>
> return [[ NSImage alloc ] initWithContentsOfFile: [[ NSBundle
> mainBundle ] pathForResource:@"hoge" ofType:@"png"]];
>
> }
>
> のように NSImage の値を返してみましたが、画像が表示されませんでした。
> 画像を表示する場合は、わざわざアウトレットを作って、 setImage: などのメソッドを呼び出すしかないのでしょうか?

手元で試してみました。

ご説明通りにテーブルカラムのデータセルにNSImageCellを設定し、
テスト目的でデータソースを次のようにしてみました。
画像も表示され、直接メソッドを呼び出す必要は無いようです。


どうぞ、よろしくお願いします。

@implementation MyDataSource

- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
{
return 1;
}

- (id)tableView:(NSTableView *)aTableView
objectValueForTableColumn:(NSTableColumn *)aTableColumn
row:(NSInteger)rowIndex
{
NSImage *image = [NSImage imageNamed:NSImageNameUserAccounts];

return image;
}

@end

overisland

unread,
Nov 5, 2009, 8:27:53 AM11/5/09
to cocoa-dev-japan
kawana 様

返信ありがとうございました。

データソースでうまくいく、とのことでしたので、私のコードのどこかに問題があると考えていろいろやってみたところ、

if ([tableColumn identifier]==@"hoge"){

の部分を

if([[tableColumn identifier] isEqualToString:@"hoge"]){

に変更したところ、うまくいきました。質問とは違う部分の問題でした。

わざわざコードをお試しいただいて、本当にありがとうございました。
今後もよろしくお願いします。
Reply all
Reply to author
Forward
0 new messages