加载表数据时,不会修改自定义表单元视图

时间:2014-06-16 21:44:42

标签: objective-c xcode macos nstableview nstableviewcell

我对自定义NSTableCellView有一点问题。

问题:我在Nib中有一个表视图,其中配置了所有内容以从数组加载数据。现在,没关系。问题是,当应用程序正在准备视图时(使用方法(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row),返回的视图会根据我的需要进行修改(在返回之前由断点监视),但是我可以看到的视图,每个人都可以看到,未被修改。

我希望你能帮我找到问题所在。我给你一些东西来帮助理解我的问题。

部分图片

返回之前

单元格,如您所见,视图也被修改。

Cell before get returned

在表视图中显示的单元格,在这种情况下,自定义视图未被修改,它看起来像我没有修改任何东西

Cell that everybody can see

代码

我的自定义NSTableCellView,只有标题...

@interface playlistQueueItemView : NSTableCellView
@property (weak) IBOutlet NSButton *button;
@property (strong) IBOutlet NSTextField *title;
@property (strong) IBOutlet NSTextField *artist;

- (void)setAllFromInitWithTitle:(NSString*)title artist:(NSString*)artist;
@end

为表创建视图的方法:

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    playlistQueueItemView *cell = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
    NSDictionary* song = [[PlaylistQueue getQueue] getSongWithPos:(int) row];

    cell.artist.stringValue = song[@"artista"];
    cell.title.stringValue = song[@"titulo"];

    return cell;
}

还有一件事,我关注了一个名为TableViewPlayground的Apple示例项目。

谢谢:D

1 个答案:

答案 0 :(得分:1)

您必须覆盖- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row,然后返回视图。

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row中,您可以返回具有您想要填充的值的模型对象。

source