2

我的代码真的太长了,不能在这里发布,即使是一小部分。所以我只要求一两件事:在我看来,在修改 uitable 'ht' 的 'Data' 属性时:

set(ht, 'Data', something);

触发“cellSelectionCallback”例程(因为选择很可能确实发生了变化),但不是在修改数据集后立即触发。

  1. 这是真的 ?
  2. 有没有办法防止这种行为?

谢谢 !

4

3 回答 3

2

我有使用 uitable 的代码,例如:

tbl = uitable('Parent', fh, 'CellSelectionCallback',{@cell_select_callback fh});

我做了一个快速的实验,只有当导致所选单元格发生变化时set(tbl,'Data',my_data)才会触发使用回调,并且这会立即发生(据我所知 - 我没有看到明显的延迟)。set

要阻止这种情况发生,您只需取消设置CellSelectionCallback属性,更改数据,然后重置 CellSelectionCallback

于 2012-12-13T18:58:14.813 回答
1

我遇到过同样的问题。收到index out of bounds警告。为了摆脱那些我在我的CallSelectionCallback

if ~isempty(eventdata.Indices)
 // all the code
end

当 set 命令触发时CallSelectionCallbackeventdata.Indices空。

于 2013-04-16T20:33:51.950 回答
1

与塞巴斯蒂安的回答类似的可能性是将其放入您的 cellselectioncallback 函数中:

function output = mycellselection(source,event)

if isempty(event.Indixes)
    output = [];
    return
end
% rest of your code for cell selection

end

如果您不需要任何输出,则可以将其删除。我只是把它放在那里提醒您必须为任何输出分配一个值。

于 2014-08-01T18:59:05.653 回答