修改数据导致CellSelectionCallback执行和抛出的错误——我防止这种情况吗?

5视图(30天)
我有一个UI表填充其他UI表数据基于当前选中行,使用CellSelectionCallback函数。不幸的是,当我在这个主界面表修改或删除行,MATLAB似乎执行CellSelectionCallback函数,该函数将抛出一个错误在我的一个条件语句。我怀疑,MATLAB是取消勾选任何细胞之前已经被选中,这是导致eventdata。指标变量不再成为空的或公认的格式,但是我努力纠正条件语句(isnull isempty, < 1)捕捉这未能解决这个问题。我试着把调试断点CellSelectionCallback函数看到发生了什么,但出于某种原因,MATLAB忽略它们。这个问题是 几年前,但显然没有回答。谁知道什么样的条件语句可以放在SelectionCallback能赶上这个问题?提前感谢!
MATLAB生成以下错误消息。tab_Category场上的名称,“如果…”功能在97行是我的条件语句执行正常的GUI任务:
指数超过矩阵维度。
错误KeywordInputDiag > tab_Category_CellSelectionCallback(第97行)如果所有(~ cellfun (@isempty,临时(eventdata.Indices (1) 1:2)))
错误gui_mainfcn(第96行)函数宏指令(变长度输入宗量{:});
错误KeywordInputDiag(42)行gui_mainfcn (gui_State,变长度输入宗量{:});
@误差(hObject eventdata) KeywordInputDiag (tab_Category_CellSelectionCallback, hObject、eventdata guidata (hObject))
当ui表CellSelectionCallback评估时发生错误

接受的答案

Michael B
Michael B 2016年4月15日
玩耍后脚本我设法找出到底发生了什么。当一些导致当前表选择被清除,它会自动触发CellSelectionCallback功能和运行任何代码。eventdata。指标变量,是由这个动作是一个0 x2双数组。执行isempty检查因为eventdata直接将返回0。指数并不是空的,它只是一个零长度数组。如果有任何在CellSelectionCallback函数使用eventdata的价值。指数和没有方法来处理一个零长度数组作为输入,MATLAB将抛出一个错误。这可以避免简单地添加一个条件语句内CellSelectionCallback函数检查eventdata的长度。指数在做任何其他事情之前。
1评论
乔
2018年1月18日
喂Mihael B,
我也有同样的问题,但我不知道如何解决它。
我的代码是这样的:
函数table_Diagrams_CellSelectionCallback (hObject eventdata处理)
行= eventdata.Indices (1);
坳= eventdata.Indices (2);
assignin (“基地”,“行”行)
assignin (“基地”,“上校”上校)
我将感激,如果你能帮助我
提前谢谢你

登录置评。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!