我在NSMutableArray
中有数据,我想在NSTableView
中显示,但只有cols的数量发生了变化。
NSTableView
的使用基于教程here。
FinalImageBrowser是IBOutlet
到NSTableView
。
@implementation AppController
NSMutableArray *listData;
- (void)awakeFromNib {
[FinalImageBrowser setDataSource:self];
}
- (IBAction)StartReconstruction:(id)sender
{
NSMutableArray *ArrayOfFinals = [[NSMutableArray alloc] init]; //Array of list with final images
NSString *FinalPicture;
NSString *PicNum;
int FromLine = [TextFieldFrom intValue]; //read number of start line
int ToLine = [TextFieldTo intValue]; //read number of finish line
int RecLine;
for (RecLine = FromLine; RecLine < ToLine; RecLine++) //reconstruct from line to line
{
Start(RecLine); //start reconstruction
//Create path of final image
FinalPicture = @"FIN/final";
PicNum = [NSString stringWithFormat: @"%d", RecLine];
FinalPicture = [FinalPicture stringByAppendingString:PicNum];
FinalPicture = [FinalPicture stringByAppendingString:@".bmp"];
[ArrayOfFinals addObject:FinalPicture]; // add path to array
}
listData = [[NSMutableArray alloc] init];
[listData autorelease];
[listData addObjectsFromArray:ArrayOfFinals];
[FinalImageBrowser reloadData];
NSBeep(); //make some noise
NSImage *fin = [[NSImage alloc] initWithContentsOfFile:FinalPicture];
[FinalImage setImage:fin];
}
- (int)numberOfRowsInTableView:(NSTableView *)tv {
return [listData count];
}
- (id)tableView:(NSTableView *)tv objectValueFromTableColumn:(NSTableColumn *)tableColumn row:(int)row {
return (NSString *)[listData objectAtIndex:row];
}
@end
当StartReconstruction结束时,cols的数量已经改变了,但它们是空的。当我调试app时,listData中的项目是严格的。
答案 0 :(得分:0)
我猜你忘了将FinalImageBrowser
插座连接到桌面视图。这意味着您的setDataSource:
消息将发送到nil
,这会使表格视图不带数据源。
无论如何都不需要发送该消息 - 您可以在笔尖中设置数据源。删除awakeFromNib
实施,并将表格视图的dataSource
插座连接到IB中的数据源对象,以及FinalImageBrowser
插座连接到表格视图(也在IB中)。