guidata
UI 데이터 저장 또는 가져오기
설명
참고
메인 앱 Figure의 UserData
속성에 앱 데이터를 저장하면 코드의 가독성을 높일 수 있기 때문에 guidata
를 사용하는 것보다 이 방법을 권장합니다. 앱 데이터 저장 및 공유에 대한 자세한 내용은 콜백 간 데이터 공유하기 항목을 참조하십시오.
guidata(
는 obj
,data
)obj
가 Figure이면 지정된 데이터를 해당 응용 프로그램 데이터에 저장하고, 또 다른 구성요소이면 obj
의 부모 Figure에 저장합니다. 자세한 내용은 guidata가 데이터를 관리하는 방식 항목을 참조하십시오.
예제
프로그래밍 방식 UI에 데이터 저장하기
클릭하면 카운터 데이터를 저장하고 가져오는 프로그래밍 방식 UI를 만듭니다.
먼저 progCounter.m
이라는 프로그램 파일을 생성합니다. 프로그램 파일 내에서 다음을 수행합니다.
Figure를 생성합니다.
필드 값이 0으로 초기화된 구조체를 만듭니다.
Figure에 데이터를 저장합니다.
Figure에서 데이터를 가져오고, 데이터를 변경하고, 새 데이터를 다시 Figure에 저장하는 콜백 함수를 정의합니다.
프로그램을 실행하고, Figure 안쪽을 클릭합니다. 명령 창에 업데이트된 데이터가 나타납니다.
f = figure; data.numberOfClicks = 0; guidata(f,data) f.ButtonDownFcn = @My_Callback; function My_Callback(src,event) data = guidata(src); data.numberOfClicks = data.numberOfClicks + 1; guidata(src,data) data end
data = struct with fields: numberOfClicks: 1
GUIDE에서 guidata
사용하기
GUIDE에서 버튼을 만든 다음, 버튼을 눌렀을 때 데이터를 저장하고 액세스합니다. 이렇게 하려면 먼저 handles
구조체에 필드를 추가하고, guidata
를 사용하여 필드를 업데이트하고 관리하십시오. (handles
를 덮어쓰는 대신 데이터를 추가하십시오. 자세한 내용은 GUIDE가 guidata를 사용하는 방식 항목을 참조하십시오.) 그런 다음 버튼을 눌렀을 때 guidata
를 사용하여 데이터를 액세스하고 저장하는 콜백을 구성합니다.
이렇게 하려면 먼저 GUIDE를 열고 레이아웃 영역에 누름 버튼을 추가하십시오. 그런 다음 편집기 아이콘을 클릭하여 편집을 위해 프로그램 파일을 엽니다. GUIDE에 의해 자동으로 생성된 OpeningFcn
을 찾고 handles
에 numberOfClicks
라는 새 필드를 추가합니다.
% --- Executes just before countClicks is made visible. function countClicks_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to countClicks (see VARARGIN) % Choose default command line output for countClicks handles.output = hObject; handles.numberOfClicks = 0; % Update handles structure guidata(hObject, handles);
다음으로, GUIDE에 의해 생성된 누름 버튼 콜백 함수를 찾습니다. 콜백 함수가 handles
에 저장된 데이터에 액세스하고, 데이터를 수정하고, 변경된 데이터를 구조체에 저장하고, 새 데이터를 명령 창에 표시하도록 프로그래밍합니다. GUIDE에서는 콜백이 실행 중인 객체를 참조하기 위해 src
대신 hObject
를 사용한다는 점에 유의하십시오.
% --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) handles.numberOfClicks = handles.numberOfClicks + 1; guidata(hObject,handles) data = guidata(hObject)
>> countClicks data = struct with fields: figure1: [1×1 Figure] pushbutton1: [1×1 UIControl] output: [1×1 Figure] numberOfClicks: 1
입력 인수
obj
— 그래픽스 객체
그래픽스 객체
Figure
, Axes
, Illustration
또는 UI 객체와 같은 그래픽스 객체입니다. 이 인수를 사용하여 data
를 저장하는 Figure를 지정합니다. 지정된 객체가 Figure가 아닐 경우 data
를 저장하는 데 객체의 부모 Figure가 사용됩니다.
data
— 데이터
임의의 MATLAB® 데이터
Figure에 저장할 데이터로, 임의의 MATLAB 데이터로 지정됩니다. 일반적으로 data
는 구조체로 지정되므로 필요에 따라 새 필드를 추가할 수 있습니다. 예를 들어, 다음과 같이 Category
라는 필드가 있는 데이터 구조체를 만들고, 필드의 데이터를 구조체에 저장하고, 저장된 데이터를 명령 창에 표시합니다.
data.Category = 'Projected Growth';
guidata(gcf,data);
data = guidata(gcf)
알고리즘
guidata
가 데이터를 관리하는 방식
guidata
는 언제든지 부모 Figure 하나당 하나의 변수만 관리할 수 있습니다. 이후에 guidata(obj,data)
를 호출하면 이전에 저장된 데이터를 덮어씁니다. 추가 데이터는 여러 필드를 갖는 구조체를 만들어 저장하십시오.
GUIDE가 guidata
를 사용하는 방식
GUIDE는 guidata
를 사용하여 handles
라는 구조체를 저장하고 유지합니다. GUIDE 코드 파일에서는 handles
구조체를 덮어쓰지 마십시오. 프로그램이 더 이상 동작하지 않게 됩니다. 다른 데이터를 저장해야 할 경우에는 handles
구조체에 새 필드를 추가하면 됩니다.
버전 내역
R2006a 이전에 개발됨
참고 항목
guide
| guihandles
| getappdata
| setappdata
| struct
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)