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

最佳答案

一种方法是通过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

现在在界面生成器中进行绑定(bind):
  • 创建一个NSArrayController并将其连接到arrayController
  • 将NSTableView连接到Table;
  • 选择NSTableView并将TestAppDelegate设置为其数据源并委托(delegate)
  • 对于表
  • 中的每一列
  • 将其值绑定(bind)到arrayController
  • Controller key 设置为rangedObjects
  • 模型 key 路径设置为上方的每个 key (例如ID或名称)

  • 运行时,现在应该只有一个数据行。 (这是未经测试的代码,但是应该给出总体思路)

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

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

    关于objective-c - 如何使用NSArrayController填充NSTableView中的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3616945/

    10-12 21:28