如何使用NSArrayController填充NSTableView中的数据

时间:2010-09-01 10:10:17

标签: objective-c

我想使用NSArrayController来填充NSTableview,但我无法找到确切的过程。

1 个答案:

答案 0 :(得分:32)

一种方法是通过KVC,使用NSArrayController填充NSTableView。

示例代码:

TestAppDelegate.h

#import <Cocoa/Cocoa.h>

@interface TestAppDelegate : NSObject <NSApplicationDelegate>
{
    IBOutlet NSArrayController *arrayController;
    IBOutlet NSTableView *theTable;
}

@property (assign) IBOutlet NSArrayController *arrayController;
@property (assign) IBOutlet NSTableView *theTable;

- (void) populateTable;

@end

TestAppDelegate.m

#import "TestAppDelegate.h"

@implementation TestAppDelegate

@synthesize arrayController;
@synthesize theTable;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Populate the table once with the data below
    [self populateTable];
}

- (void) populateTable
{
    NSMutableDictionary *value = [[NSMutableDictionary alloc] init];
    // Add some values to the dictionary
    // which match up to the NSTableView bindings
    [value setObject:[NSNumber numberWithInt:0] forKey:@"id"];
    [value setObject:[NSString stringWithFormat:@"test"] forKey:@"name"];

    [arrayController addObject:value];

    [value release];

    [theTable reloadData];
}
@end

现在在界面构建器中进行绑定:

  • 创建一个NSArrayController&amp;将它连接到arrayController
  • 将NSTableView连接到桌面;
  • 选择NSTableView并将TestAppDelegate设置为其dataSource&amp;代表
  • 表格中的每一栏
  • 将其值绑定到 arrayController
  • 控制器密钥设置为 arrangeObjects
  • 从上方为每个键设置模型密钥路径(例如 id name

运行时,现在应该有一个数据行。 (这是未经测试的代码,但应该给出一般的想法)

有关这些绑定的更多帮助,请查看this example

Here is also a good example,其中包含如何创建已填充的NSTableView的图片。