gpt4 book ai didi

objective-c - NSTableView非法数据源

转载 作者:行者123 更新时间:2023-12-03 17:15:01 24 4
gpt4 key购买 nike

我正在阅读 Tim Isted 所著的《Beginning Mac Programming》一书,并且我被一个处理 NSTableView 的程序所困扰。我有一个继承自 NSDocument 的 Cocoa 应用程序。该应用程序包含一个 NSTableView。我已将 TableView 的数据源设置为文件的所有者。执行后我得到* Illegal NSTableView data source ()。必须实现 numberOfRowsInTableView: 和 tableView:objectValueForTableColumn:row:

MyDocument.h的接口(interface)是

   #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];
}

我做错了什么???非常感谢。

最佳答案

您已经实现了 numberOfRowsInTableView,但您需要实现 numberOfRowsInTableView:。正确的签名是:

-(NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView

关于objective-c - NSTableView非法数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9473213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com