为什么我的tableview行没有填充我提供的数据?

时间:2014-04-09 18:26:25

标签: objective-c macos

我的表视图中的每一行只是说"表格查看单元格"。我已经检查了我正在使用的数据源数组,它有55个对象,其中没有任何值具有" Table View Cell"。

@implementation BMAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
      self.schemes = [BMSchemeHandler parseSchemeFileToArray];
    self.schemeTableView.dataSource=self;
    self.schemeTableView.delegate=self;

}

-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
    return [self.schemes objectAtIndex:row];
}
-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView{
    return (self.schemes.count);
}

enter image description here

这是我的解决方案......

@implementation BMAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
      self.schemes = [BMSchemeHandler parseSchemeFileToArray];
    self.schemeTableView.dataSource=self;
    self.schemeTableView.delegate=self;

}

-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView{
    return (self.schemes.count);
}

- (NSView *)tableView:(NSTableView *)tableView
   viewForTableColumn:(NSTableColumn *)tableColumn
                  row:(NSInteger)row {

    // Retrieve to get the @"MyView" from the pool or,
    // if no version is available in the pool, load the Interface Builder version
    if([tableColumn.identifier isEqualToString:@"myCell"]){
    NSTableCellView* result = [tableView makeViewWithIdentifier:@"myCell" owner:self];

    // Set the stringValue of the cell's text field to the nameArray value at row
    result.textField.stringValue = [self.schemes objectAtIndex:row];

    // Return the result
    return result;
    }else{

    }
    return nil;
}

1 个答案:

答案 0 :(得分:0)

如果您正在查看Apple的tableview游乐场或类似的东西,那么您所缺少的是表格单元格文本字段中的绑定。在XIB中,在表格单元格中,它们使用关键路径objectValue将文本字段的值绑定到表视图。[NSString属性] - 您告诉表视图对象值是什么,因此您可以依赖关于那个约束力。

如果您没有将单元格中的文本字段绑定到您在objectValueForTableColumn:row:中返回的对象,则需要实现NSTableViewDelegate协议并实现TableView:viewForTableColumn:row以使单元格视图出列,获取指向文本字段的指针以设置其字符串值。

仅设置对象值不足。 NSTableCellView需要知道文本来自该对象的位置。