***非法的NSTableView数据源( )。必须实现numberOfRowsInTableView:和tableView:objectValueForTableColumn:row:

问题描述 投票:1回答:1

好吧,这让我发疯,我有一个我一直在努力的Xcode OSX应用程序。我最近做了一些更改,我在编译时开始收到以下错误:

 iModerate Desktop[72478:303] *** Illegal NSTableView data source (<NSView: 0x102535290>).  
Must implement numberOfRowsInTableView: and tableView:objectValueForTableColumn:row:

我无法锻炼它的来源,我在appDelegate中实现了这两种方法:

- (NSView *)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
// The return value is typed as (id) because it will return a string in most cases.
id returnValue=nil;
// The column identifier string is the easiest way to identify a table column.
NSString *columnIdentifer = [tableColumn identifier];
// Get the name at the specified row in namesArray
NSString *theName = [[self.twitterClientsController arrangedObjects] objectAtIndex:row];
// Compare each column identifier and set the return value to
// the Person field value appropriate for the column.
if ([columnIdentifer isEqualToString:@"name"]) {
    returnValue = theName;
}
return returnValue;

}

还有这个

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return[[self.twitterClientsController arrangedObjects] count];
}

app delegate设置为NSTableViewDelegate

现在额外的奇怪/令人沮丧的事情,是我在xib中没有NSTableView,我做了,但我已经删除了它们。我有事件在BBedit中打开了XIB并搜索了NSTableView,那里有100%没有!

所以,请帮助!如果我能解决什么NSView:0x102535290我可以跟踪它。

帮助保存我的理智非常感谢!

加雷思

objective-c xcode macos nstableview
1个回答
1
投票

这样就解决了我:

  • 从接口Builder中删除数据源和委托连接。
  • 在.h文件中为您的tableview创建一个outlet属性
  • 在applicationDidFinishLaunching方法的.m文件中为tableview手动设置委托和数据源 [self.tableView setDelegate:self]; [self.tableView setDataSource:self];
© www.soinside.com 2019 - 2024. All rights reserved.