MATLAB: How to assign a callback to a gui element created at runtime

appdesignercallbackMATLAB

Hi,
In AppDesigner I created an app that creates a slider at runtime:
Tt_end_slider = uislider();
Tt_end_slider.Position = app.emptySlider_2.Position;
Tt_end_slider.Tag='t_end';
Tt_end_slider.UserData=i;
Tt_end_slider.ValueChangedFcn = @(source, event) app.osc_prev_slider_ValueChanged ;
The Callback is defined as follows
% Callback function
function osc_prev_slider_ValueChanged(app, event)
value = event.Source.Value;
[..]
end
Using the slider, I get this error:
Not enough input arguments.
Error in tutorialApp/osc_prev_slider_ValueChanged (line 575)
value = event.Source.Value;
Error in tutorialApp>@(source,event)app.osc_prev_slider_ValueChanged (line 325)
Tt_start_slider(i).ValueChangedFcn = @(source,event)app.osc_prev_slider_ValueChanged ;
I couldn't find how to correctly pass the requested argument to the callback ( I tried with @(source,event) looking at the callbacks assigned using the graphic interface)

Best Answer

You're close. I see two errors.
1. "Not enough input arguments" is because you are not passing 2 inputs to your callback function. App Designer automatically passes app, but you need to pass in something for event. Update your ValueChangedFcn to this
Tt_end_slider.ValueChangedFcn = @(source, event) app.osc_prev_slider_ValueChanged(Tt_end_slider);
2. Inside your callback function, you are using incorrect dot notation to get the value of the slider. Remove ".Source".
value = event.Value;
Related Question