1

MATLAB R2012b에서 GUIDE를 사용하고 있으며 편집 가능한 논리 확인란이있는 uitable이 있습니다. 셀 편집 콜백은 다음과 같습니다 : 나는 확인란 중 하나를 클릭하면MATLAB 적합한 논리 확인란을 선택하지 않았습니다.

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에서 시각적으로 확인되지 않습니다. 다시 클릭하면 변수가 다시 업데이트되지만 확인란은 선택하지 않은 상태로 유지됩니다.

따라서 데이터는 업데이트 중이지만 GUI는 업데이트되지 않습니다. 여기서 뭐가 잘못 됐어?

참고 : 논리적 확인란은 GUIDE에서 편집 가능으로 설정되어 있으므로 문제가되지 않습니다.

답변

2

데이터 격자의 '데이터'속성을 설정하는 데 사용하는 배열은 일반적으로 셀 배열입니다.

콜백이 실행되면 배열의 값에 체크 상자의 현재 상태가 반영됩니다. 즉, 설정하지 않아도됩니다. , BTW

table_data{row,column} = eventdata.NewData; 

난 당신이 가이드 표 속성 편집기에서 열 형식으로 "논리"로 설정 한 있으리라 믿고있어 : 당신이 TABLE_DATA을 설정하려는 경우

, 당신은 같은 것을 사용한다.