【问题标题】:NSTableView cell text not changedNSTableView 单元格文本未更改
【发布时间】:2017-02-19 19:57:26
【问题描述】:

我在我的 osx 应用程序中使用NSTableView

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
    if (tableView == self.categoryTable) {
        return [[[AppAPI shared] categoryArr] count];
    }
    return 0;
}

- (nullable id)tableView:(NSTableView *)tableView objectValueForTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row {
    if (tableView == self.categoryTable) {
        NSTableCellView *cellView = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];

        CategoryItem * cat = [[AppAPI shared] categoryArr][row];

        cellView.textField.stringValue = cat.name;

        return cellView;
    }

    return nil;
}

我使用此代码向表中插入数据,但我得到的只是带有此文本的行:

cellView 不为零

知道为什么会这样吗?

【问题讨论】:

  • 表格视图单元格来自哪里? IB ?

标签: objective-c xcode macos nstableview


【解决方案1】:

您使用了错误的委托/数据源方法

objectValueForTableColumn:row 应该返回该行的对象

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    return [[AppAPI shared] categoryArr][row];
}

viewForTableColumn:row: 返回视图。

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    return [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
}

PS:您的设计中有多少个表格视图需要您检查是否正确?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多