0

所以我有一个CPTableViewwith 2 columns。由于与列绑定,我CPTableView被填满。Array ControllerCPTableView

我知道如何填充,重新填充表格视图,没问题。

我的问题是我想改变一个单元格的值,当然,这个值也必须在数组控制器中改变。

所以我通过双击单元格输入我的新值,输入它。好的,但是数组中的值没有改变,这很正常,因为我没有告诉数组这样做。

但是要更改数组中的值,我必须能够获取我在单元格中写入的新值以放入数组中。

我不能这样做,或者我不知道该怎么做。

我尝试了 CPTableColumn 方法:dataCellForRow但它不起作用,调试器告诉我使用dataViewForRow. 好的,我使用它,但是当我获取单元格值时,它总是返回:“文本单元格”为 IB 中的单元格设置的默认标题。

所以我真的不知道该怎么做我想做的事。

4

3 回答 3

0

如果您使用CPTableView正确绑定到 a CPArrayController,您的表格单元格值应在您编辑它们并通过“反向绑定”提交更改时自动更新。也许仔细检查您是否已绑定CPValueBinding每列。

看看这个手​​动测试:Tests/Manual/ArrayController1在 Cappuccino 存储库中。如果我不记得错了,它会实现这一点。

如果失败,您始终可以使用此表视图委托方法手动完成:

tableView:setObjectValue:forTableColumn:row:

尝试将这样的内容添加到您的表委托(未经测试):

- (void)tableView:(CPTableView)tableView setObjectValue:(id)aValue forTableColumn:(CPTableColumn)tableColumn row:(int)aRow
{   
    var name = [tableColumn identifier];

    CPLog.info("Row %d of table column %@ changed to %@.", aRow, name, aValue);
    // ... change actual model here.
}

查看Tests/Manual/TableTest/EditingCappuccino 存储库中的示例。

于 2013-06-14T10:54:36.097 回答
0

事实上,它的工作原理,我不是很好的方式..

要检查我的单元格值是否已更改,我在包含数据的“CPArray”中查找它。但是这个数组没有绑定到我的'CPTableView',它是绑定的'CPArrayController'。所以我检查了这个,我看到单元格值已正确修改!

感谢您的时间。

于 2013-06-20T14:01:44.877 回答
0

尝试告诉数组值已更改。然后重新加载表。

执行此步骤: 1)值更改。在数组中更改它 2)重新加载表(UItableView 具有函数 reloadData)。而且因为您将数组与表重新加载绑定将自动更新表

于 2013-06-13T16:58:28.060 回答