【问题标题】:NSTableView illegal data sourceNSTableView非法数据源
【发布时间】: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


    【解决方案1】:

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

    -(NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
    

    【讨论】:

      猜你喜欢
      • 2017-05-29
      • 2019-04-10
      • 2012-07-30
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-14
      相关资源
      最近更新 更多