Я работаю над обучением Objective-C/Coaoa, но, похоже, я немного застрял в том, чтобы заставить объект NSTableView работать для меня. Я следовал всем инструкциям, но по какой-то причине я все еще получаю эту ошибку:NSTableView Troubles
Class 'RobotManager' does not implement the 'NSTableViewDataSource' protocol
Вот мой источник, скажите мне, что вы видите здесь не так, я о том, чтобы оторвать лицо.
RobotManager.h
@interface RobotManager : NSObject { // Interface vars IBOutlet NSWindow *MainWindow; IBOutlet NSTableView *RobotTable; NSMutableArray *RobotList; } - (int) numberOfRowsInTableView: (NSTableView*) tableView; - (id) tableView:(NSTableView *) tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)rowIndex; @end
RobotManager.m
#import "RobotManager.h" @implementation RobotManager -(void) awakeFromNib { // Generate some dummy vals [RobotList addObject:@"Hello"]; [RobotList addObject:@"World"]; [RobotTable setDataSource:self]; // This is where I'm getting the protocol warning [RobotTable reloadData]; } -(int) numberOfRowsInTableView: (NSTableView *) tableView { return [RobotList count]; } -(id) tableView:(NSTableView *) tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)rowIndex { return [RobotList objectAtIndex:rowIndex]; } @end
Я бегу OS X 10.6.1, если это делает никакой разницы. Заранее спасибо.
Это избавило от предупреждения, но данные все еще не отображаются в NSTableView. –
Nakedsteve: Вы не создали массив и поместили его в переменную 'RobotList'. Эта переменная содержит 'nil'. Таким образом, вы отправляете сообщения 'addObject:' в 'nil', что ничего не делает и запрашивает счетчик' nil', который возвращает 0. –
Да, это так. Я добавил 'RobotList = [[NSMutableArray alloc] init];' и теперь он отлично работает. Всем спасибо! –