1

我对自定义有一点问题NSTableCellView

问题:我在 Nib 中有一个表视图,所有内容都配置为从数组加载数据。目前,还可以。问题是,当应用程序准备视图时(使用方法(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row),返回的视图被修改为我想要的(在返回之前通过断点观察),但我可以看到的,每个人都可以看到的视图没有被修改。

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

一些图片

返回之前的单元格,如您所见,视图也被修改。

返回前的单元格

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

每个人都能看到的细胞

代码

我的习惯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;
}

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

感谢:D

4

1 回答 1

1

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

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

资源

于 2014-06-17T04:39:58.170 回答