Objective c NSTableView数据源不工作
我正在尝试使用NSArray填充NSTableView。我有一个视图控制器,我已将其设置为数据源,但每次运行程序时,都会出现以下错误:Objective c NSTableView数据源不工作,objective-c,macos,sockets,Objective C,Macos,Sockets,我正在尝试使用NSArray填充NSTableView。我有一个视图控制器,我已将其设置为数据源,但每次运行程序时,都会出现以下错误:必须实现numberOfRowsInTableView:和tableView:objectValueForTableColumn:row:,这两个错误我都已实现。 这是我的标题: #import <Cocoa/Cocoa.h> @interface ChatViewController : NSViewController <NSTableVi
必须实现numberOfRowsInTableView:和tableView:objectValueForTableColumn:row:
,这两个错误我都已实现。
这是我的标题:
#import <Cocoa/Cocoa.h>
@interface ChatViewController : NSViewController <NSTableViewDataSource>
- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView;
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex;
@end
Socket
是我创建的一个类,用于打开和关闭服务器的套接字,该类功能齐全。tableData
数组像普通数组一样填充
感谢您的帮助。首先,通过xib使您的表视图成为文件所有者的委托和数据源
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
if(aTableView == tableViewS)
{
if([[aTableColumn identifier] isEqualToString:@"first"])
{
return [self.tableData objectAtIndex:rowIndex];
}
}
return nil;
}
您需要为表列指定标识符名称
tableViewS是表视图的IBOutlet。首先通过xib使您的表视图成为文件所有者的委托和数据源
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
if(aTableView == tableViewS)
{
if([[aTableColumn identifier] isEqualToString:@"first"])
{
return [self.tableData objectAtIndex:rowIndex];
}
}
return nil;
}
您需要为表列指定标识符名称
tableViewS是table view的一个出口。首先,您不需要在.h文件中声明方法,因为它们是类所实现的协议的一部分。你真的设置了你的数据源吗?你在哪里做过这样的事吗
self.tableView.dataSource = self;
首先,不需要在.h文件中声明方法,因为它们是类实现的协议的一部分。你真的设置了你的数据源吗?你在哪里做过这样的事吗
self.tableView.dataSource = self;
如何在xib中设置标识符?感谢您在xib中的回答,选择表列,转到Identification inspector,在那里设置标识符名称。谢谢,我现在看到了如何在xib中设置标识符?感谢您在xib中的回答,选择表格列,转到识别检查员,在那里设置标识符名称。谢谢,我看到nowOmg我没有这样做,但是当我添加它时,它不会改变错误,并且tableview仍然没有填充。我唯一能想到的是,在.h文件的接口声明中重新声明两个协议方法。您不应该这样做,因为它已经是您的类确认的协议的一部分。虽然我不认为这会阻止tableview在类中查找方法,因为它们存在。OMG你是对的,我在xib和代码中连接了数据源,但它不起作用,所以我只是通过xib设置委托和数据源,它起作用了。@PR_Singh在开始回答时也这么说,但直到现在我才明白。天哪,我没有这么做,但当我添加它时,它不会改变错误,tableview仍然无法填充。我唯一能想到的是,你在你的.h文件的接口声明中重新声明了这两个协议方法。您不应该这样做,因为它已经是您的类确认的协议的一部分。虽然我不认为这会阻止tableview在类中查找方法,因为它们存在。OMG你是对的,我在xib和代码中连接了数据源,但它不起作用,所以我只是通过xib设置委托和数据源,它起作用了。另外@PR_Singh在回答的开始时说了这句话,但直到现在我才明白。