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 成为基于视图的表。从上面的代码来看,视图控制器不符合 NSTableViewDelegate 协议。

于 2013-04-04T19:17:17.227 回答
1

确保您在 IB(属性检查器)中更改了表格的内容模式。您想要基于视图,而不是基于单元格。

于 2013-04-04T19:11:36.700 回答