Я использую GUIDE в MATLAB R2012b и имею uitable
с редактируемыми логическими флажками. Обратный вызов Cell Edit выглядит следующим образом:
function data_table_CellEditCallback(hObject, eventdata, handles)
row = eventdata.Indices(1);
column = eventdata.Indices(2);
if column ~= 1 % The checkboxes are all in the first row.
guidata(hObject,handles);
return;
end
table_data = get(hObject,'Data');
if table_data(row,column) == true
table_data(row,column) = false;
else
table_data(row,column) = true;
end
set(hObject, 'Data', table_data);
handles.checked(row) = table_data(row,column); % Variable holding the data.
guidata(hObject,handles);
end
Когда я нажимаю один из флажков, я вижу, что данные в таблице обновляются соответствующим образом (и get(hObject,'Data')
, и handles.checked(row)
возвращают обновленное значение), НО фактический флажок в графическом интерфейсе визуально не проверяется. Если я нажму еще раз, переменные снова обновятся, но флажок останется снятым.
То есть данные обновляются, а GUI нет. Что здесь происходит не так?
Примечание. Логические флажки в GUIDE доступны для редактирования, поэтому проблема не в этом.