Reputation: 3488
As already asked more or less in this question: https://stackoverflow.com/questions/14397729/working-with-multiple-guis-in-matlab
I want to have the output parameers and wait for a gui to finish.
I now use waitfor
, but the output is always only a single handle
handle = uiConfigureCalibration('uiMain', handles.figure1);
waitfor(handle);
display(handle);
The output function of uiConfigureCalibration
however passes several parameters:
function varargout = uiConfigureCalibration_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
if isfieldRecursive(handles, 'handles.files.calibration')
varargout{2} = handles.files.calibration;
varargout{3} = handles.calibration;
end
Any chance to get these parameters somehow in the calling function ?
Upvotes: 0
Views: 299
Reputation: 5345
You would have to do
[output,FilesCalibration,Calibration] = uiConfigureCalibration('uiMain', handles.figure1);
to grab additional outputs - you are only asking for one output in your function call, so you always get one output. However, this will fail if you output single parameter.
Since number of outputs is variable, I think it is better to return structure containing all outputs:
function output = uiConfigureCalibration_OutputFcn(hObject, eventdata, handles)
output.output = handles.output;
if isfieldRecursive(handles, 'handles.files.calibration')
output.files.calibration = handles.files.calibration;
output.calibration = handles.calibration;
end
Now function essentially returns a subset of handles structure, containing 1 or 3 fields depending on the structure of handles
Upvotes: 1