【发布时间】:2012-02-28 06:18:48
【问题描述】:
我正在阅读 Tim Isted 的“Beginning Mac Programming”一书,但遇到了一个处理 NSTableView 的程序。 我有一个从 NSDocument 继承的 Cocoa 应用程序。该应用程序包含一个 NSTableView。我已将表视图的数据源设置为文件的所有者。执行后我得到 * Illegal NSTableView data source ()。必须实现 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];
}
我做错了什么???非常感谢。
【问题讨论】:
标签: objective-c macos cocoa