我的代码真的太长了,不能在这里发布,即使是一小部分。所以我只要求一两件事:在我看来,在修改 uitable 'ht' 的 'Data' 属性时:
set(ht, 'Data', something);
触发“cellSelectionCallback”例程(因为选择很可能确实发生了变化),但不是在修改数据集后立即触发。
- 这是真的 ?
- 有没有办法防止这种行为?
谢谢 !
我的代码真的太长了,不能在这里发布,即使是一小部分。所以我只要求一两件事:在我看来,在修改 uitable 'ht' 的 'Data' 属性时:
set(ht, 'Data', something);
触发“cellSelectionCallback”例程(因为选择很可能确实发生了变化),但不是在修改数据集后立即触发。
谢谢 !
我有使用 uitable 的代码,例如:
tbl = uitable('Parent', fh, 'CellSelectionCallback',{@cell_select_callback fh});
我做了一个快速的实验,只有当导致所选单元格发生变化时set(tbl,'Data',my_data)
才会触发使用回调,并且这会立即发生(据我所知 - 我没有看到明显的延迟)。set
要阻止这种情况发生,您只需取消设置CellSelectionCallback
属性,更改数据,然后重置 CellSelectionCallback
。
我遇到过同样的问题。收到index out of bounds
警告。为了摆脱那些我在我的CallSelectionCallback
:
if ~isempty(eventdata.Indices)
// all the code
end
当 set 命令触发时CallSelectionCallback
为eventdata.Indices
空。
与塞巴斯蒂安的回答类似的可能性是将其放入您的 cellselectioncallback 函数中:
function output = mycellselection(source,event)
if isempty(event.Indixes)
output = [];
return
end
% rest of your code for cell selection
end
如果您不需要任何输出,则可以将其删除。我只是把它放在那里提醒您必须为任何输出分配一个值。