Один из способов сделать это - через 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 и подключите его к arrayController
- Соедините NSTableView с таблицей;
- Выберите NSTableView и установите TestAppDelegate в качестве его источника данных и делегата
- Для каждого столбца в таблице
- Свяжите его значение с arrayController
- Установите Клавиша контроллера - упорядоченные объекты
- Установите Путь к ключу модели для каждой клавиши сверху (например, id или name )
При запуске теперь должна быть одна строка данных.(Это непроверенный код, но он должен дать общее представление)
Для получения дополнительной помощи с этими привязками посмотрите этот пример .
Вот также хорошийпример с картинками о том, как создать заполненный NSTableView.