2

NSTableviewの動作の一部をカスタマイズできるようにするために、テーブルビューのコントローラーとして機能するこの新しいクラスを作成しました。

@interface aTableViewController : NSObject<NSTableViewDelegate>

@end
@implementation aTableViewController    
- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
{
    return 1;
}

- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
    return @"something";
}

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{}

@end

既存のテーブルビューはNSArrayControllerにバインドされてデータを取得し、美しく機能します。NSObjectを使用してIB内のこのaTableViewControllerを参照し、テーブルビューのデリゲートをこのコントローラーオブジェクトに接続しました。ただし、これらの代表者のいずれも呼び出されませんでした。

助言がありますか?ありがとう!

4

2 に答える 2

3

私の NSTableview は、セルベースではなくビューベースです。そのため、 tableView:willDisplayCell:forTableColumn:row: が呼び出されることはありません

ビューベースのテーブルビューの場合、使用できます

func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
}
于 2015-09-04T04:48:48.160 に答える
1

あなたが投稿したものにいくつかの問題があります。@interfaceコードにはaTableViewControllerがあり、@implementationコードにはWorkspaceTableViewControllerがあります。これらの1つはタイプミスですか、それともこの2つの異なるクラスですか?

次に、コントローラーにあるメソッドは、メソッドを委任するのではなく、データソースメソッドです。バインディングを使用してテーブルにデータを入力している場合、これらのメソッドは呼び出されません。

于 2012-07-25T01:27:19.863 に答える