guidata(handles) does not save ALL handles in a Callback function in GUIDE

1 次查看(过去 30 天)
I have two callback functions defined as follow:
function hpos(hObject, pos, handles)
handles.A.L{handles.im}=value1;
guidata(hObject, handles);
function hpos2(hObject, pos, handles)
handles.A.R{handles.im}=value2;
guidata(hObject, handles);
They work fine until I try (I use the function "disp" here to get a visual feedback of what was saved):
disp(handles.A.L,handles.A.R)
Only the latest handles exists, as if it overwrote the previous one. So I get either
"Reference to non-existent field 'L'."
or
"Reference to non-existent field 'R'."
depending on what was the last updated field of the structure A.
Of course the goal is to use these value elsewhere in my code, so understanding how to save them correctly will help a lot! Thank you!

采纳的回答

Jan
Jan 2018-2-22
编辑:Jan 2018-2-22
From where are these callbacks called? Is handles the current value of the handles struct or does it contain the value of the struct as it was during the creation of the callback? The debugger will tell you this, simply set some breakpoints and check the contents of handles.
A solution is to get the current value of the struct at first:
function hpos(hObject, pos, handles)
handles = guidata(hObject);
handles.A.L{handles.im}=value1;
guidata(hObject, handles);
function hpos2(hObject, pos, handles)
handles = guidata(hObject);
handles.A.R{handles.im}=value2;
guidata(hObject, handles);
Or maybe another callback is responsible for resetting handles.A unexpectedly? Again the debugger will help you.
  1 个评论
Farbos de Luzan
Farbos de Luzan 2018-2-26
Thank you for the tip! The debugger just became my best friend. I made it work using your advice and many many attempts. I'm sure my code is not optimized and that the introduction of new functions may upset it, but I'm learning.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Startup and Shutdown 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by