NSTableView нелегальный источник данных - PullRequest
1 голос
/ 28 февраля 2012

Я читаю книгу «Начало программирования на Mac» Тима Истеда и застрял в программе, связанной с NSTableView.У меня есть приложение Какао, унаследованное от NSDocument.Приложение содержит NSTableView.Я установил источник данных табличного представления для владельца файла.После выполнения я получаю * Неверный источник данных NSTableView ().Необходимо реализовать numberOfRowsInTableView: и tableView: objectValueForTableColumn: row:

Интерфейс MyDocument.h имеет значение

   #import <Cocoa/Cocoa.h>

@interface MyDocument : NSDocument {
    IBOutlet NSTextField *newItemTextField;
    IBOutlet NSTableView *shoppingListTableView; 
    NSMutableArray *shoppingListArray;
}
-(IBAction)addNewItemToShoppingList:(id)sender;
-(void)dealloc;
-(NSInteger)numberOfRowsInTableView;
-(id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex;
@end

, а реализация -

#import "MyDocument.h"

@implementation MyDocument

- (id)init
{
    self = [super init];
    if (self) {
        shoppingListArray = [[NSMutableArray alloc] initWithObjects:@"pane",@"latte",@"pasta", nil];

    }

    return self;
}

-(IBAction)addNewItemToShoppingList:(id)sender{
    NSString *item = [newItemTextField stringValue];
    [shoppingListArray addObject:item];
    [shoppingListTableView reloadData];
    NSLog(@"allocated");

}
-(void)dealloc{
    [shoppingListArray release];
    [super dealloc];
}
-(NSInteger)numberOfRowsInTableView{
    return [shoppingListArray count];
}

-(id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex{
    return [shoppingListArray objectAtIndex:rowIndex];
}

Что я делаю неправильно???Большое спасибо.

1 Ответ

1 голос
/ 28 февраля 2012

Вы реализовали numberOfRowsInTableView, но вам нужно было реализовать numberOfRowsInTableView:. Правильная подпись:

-(NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...