NSTableView不显示数据

时间:2011-02-05 23:22:48

标签: objective-c cocoa

我在NSMutableArray中有数据,我想在NSTableView中显示,但只有cols的数量发生了变化。 NSTableView的使用基于教程here。 FinalImageBrowser是IBOutletNSTableView

@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中的项目是严格的。

1 个答案:

答案 0 :(得分:0)

我猜你忘了将FinalImageBrowser插座连接到桌面视图。这意味着您的setDataSource:消息将发送到nil,这会使表格视图不带数据源。

无论如何都不需要发送该消息 - 您可以在笔尖中设置数据源。删除awakeFromNib实施,并将表格视图的dataSource插座连接到IB中的数据源对象,以及FinalImageBrowser插座连接到表格视图(也在IB中)。