У меня есть группа кнопок с 3 переключателями внутри, а также раздел дисплея.
Эффект, который я хочу, заключается в том, что после выбора переключателя раздел дисплея также меняется.
Я реализую это с помощью класса и добавляю SelectionChangedFcn
при создании этих компонентов:
app.ControlButtonGroup.SelectionChangedFcn = {@controlBtnGroupSelectionChanged, app}
Я определяю функцию controlBtnGroupSelectionChanged(obj, eventData, app)
в том же файле, где сохранен файл функции createComponents.m.
Но когда я нажимаю другое радио, сообщения об ошибках выглядят следующим образом:
Неопределенная функция «controlBtnGroupSelectionChanged» для входных аргументов типа «matlab.ui.container.ButtonGroup». Ошибка при оценке ButtonGroup SelectionChangedFcn
Я также объявляю функцию controlBtnGroupSelectionChanged
как закрытый метод в своем классе.
Функция controlBtnGroupSelectionChanged выглядит следующим образом:
function controlBtnGroupSelectionChanged(obj, eventData, app)
% Update display section as the radio button in control section is changed
%new = app.ControlButtonGroup.NewValue;
new = obj.SelectedObject.String;
switch new
case 'Transfer Path'
% display the transfer path
imagesc(app.curImage,'Parent',app.DisplayPath);
app.DisplayPath.Visible = 'off';
case 'Store'
% display the store text
text(curStore,'Parent',app.DisplayPath);
case 'Mill'
% Display the Mill text
text(curMill,'Parent',app.DisplayPath);
end
end
Часть того, что определено в классе, выглядит следующим образом:
methods (Access = private)
% Create UIFigure and components
createComponents(app);
% Callback function for Control Button Group Selection Changed
controlBtnGroupSelectionChanged(obj, eventData, app);
end
И часть, связанная с этим в функции createComponents:
app.ControlButtonGroup = uibuttongroup(app.UIFigure);
app.ControlButtonGroup.Title = 'Control';
app.ControlButtonGroup.FontSize = 16;
app.ControlButtonGroup.Units = 'Normalized';
app.ControlButtonGroup.Position = [0.45 0.75 0.45 0.2];
app.ControlButtonGroup.SelectionChangedFcn = {@controlBtnGroupSelectionChanged,app};
Почему он говорит, что моя функция не определена?
ОБНОВЛЕНИЕ: я просмотрел некоторые другие демонстрации и изменил обратный вызов как app.ControlButtonGroup.SelectionChangedFcn = @(h, e)controlBtnGroupSelectionChanged(app). И определите (также прототип) его так же, как controlBtnGroupSelectionChanged (приложение). Тогда это работает. поэтому я предполагаю, что проблема должна заключаться в количестве параметров, но я до сих пор не нахожу подробной информации об этом. Любые подсказки приветствуются!!