1

ココアでビューベースのテーブルを実装する方法を理解するのに苦労しています。現在、昔ながらのセルベースのテーブルの実装を行っています。私が理解したように、NSTableCellViewをNIBファイルの列にドラッグするだけでは、テーブルビューベースにはなりません:)

この記事を読みました: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/TableView/TableViewOverview/TableViewOverview.html

しかし、まだ無知です...何らかの理由で、私の tableView:viewForTableColumn:row: メソッドがヒットしません。

セルベースのテーブルをビューベースに変換する方法について、順を追って説明してもらえますか?

私のセルベースのテーブルには次のものがあります。

// .h
#import "ObjectClass.h"
#import "ObjectTable.h"

@interface ObjViewController : NSObject <NSTableViewDataSource, NSTableViewDelegate>
{
    IBOutlet ObjectTable *objectTable;
    NSMutableArray *list;
    ObjViewController *current;
}  

//.m
#import "ObjViewController.h"

@implementation ObjViewController

-(id)init
{
   self = [super init];
   if (self)
   {
       current = self;
       list = [[NSMutableArray alloc] init];
   }

   return self;
}

- (NSInteger) numberOfRowsInTableView:(NSTableView *)tableView
{
    return [list count];
}

-(id) tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn
                                                               row:(NSInteger)row
{
    ObjectClass *obj = [list objectAtIndex:row];

    NSString *identifier = [tableColumn identifier];

    return [obj valueForKey: identifier];
}

// .h
@interface ObjectClass : NSObject
{
}
@property int categoryID;
@property int oID;
@property NSString *name;

@end

ありがとうございました!

4

2 に答える 2

2

方法

tableView:viewForTableColumn:row:

NSTableViewDelegate プロトコルからのもので、実装されると NSTableView がビューベースのテーブルになります。上記のコードから、View Controller は NSTableViewDelegate プロトコルに準拠していません。

于 2013-04-04T19:17:17.227 に答える
1

IB (Attributes Inspector) でテーブルのコンテンツ モードを変更したことを確認します。セルベースではなく、ビューベースが必要です。

于 2013-04-04T19:11:36.700 に答える