3.創建確認對話框
在app設計中,確認對話框是不可缺少的存在,如關閉app前的提醒、修改參數之后的提醒,可以規避在操作過程中的失誤,從而避免數據等的丟失
3.1 創建對話框語法
uiconfirm(f,message,title) uiconfirm(f,message,title,Name,Value) selection = uiconfirm(___)
其中,uiconfirm( 在目標圖窗 f,message,title)f 中顯示一個 App 內模態確認對話框。此語法顯示供用戶選擇的兩個選項
uiconfirm( 顯示確認對話框,其中有一個或多個可自定義對話框外觀和行為的 f,message,title,Name,Value)Name,Value 對組參數。例如,您可以在對話框中指定一組自定義選項,而不是默認的
以字符向量形式返回用戶的選擇。可以結合上述任一語法使用 selection = uiconfirm(___)selection 輸出參數。如果使用此語法,顯示對話框時 MATLAB 命令提示將不可訪問。
message:要顯示的消息,指定為字符向量、字符向量元胞數組或字符串數組。當消息有多行文本時,指定元胞數組或字符串數組。數組中的每個元素對應於一行文本。
title:對話框標題,指定為字符向量或字符串標量。
指定可選的、以逗號分隔的 Name,Value 對組參數。Name 為參數名稱,Value 為對應的值。Name 必須放在引號中。您可采用任意順序指定多個名稱-值對組參數,如 Name1,Value1,...,NameN,ValueN 所示。
3.2 詳述
根據不同的應用場景,對話框的個性化設計分別為下述幾種
3.2.1 指定不同的圖標
selection = uiconfirm(app.UIFigure,'Close document?','Confirm Close',...
'Icon','warning');

當你點擊ok后,uiconfirm 將以字符向量形式返回該選項,即返回“ok”。
其中,系統預定義圖標的類型包括:

同時可以自定義圖標,可將自定義圖標指定為下列值之一:
-
字符向量,指定 MATLAB 路徑中的 SVG、JPEG、GIF 或 PNG 圖像的文件名。也可以指定圖像文件的完整路徑。
- 真彩色圖像數組
3.2.2 指定自定義選項
例:創建一個確認對話框,其中包含三個選項:
msg = 'Saving these changes will overwrite previous changes.';
title = 'Confirm Save';
selection = uiconfirm(f,msg,title,...
'Options',{'Overwrite','Save as new','Cancel'},...
'DefaultOption',2,'CancelOption',3);

Options: 自定義選項,指定為字符向量元胞數組或字符串數組。
DefaultOption:默認選項,指定為字符向量、字符串標量或整數。默認選項對應於對話框中默認情況下獲得焦點的按鈕。
指定字符向量或字符串標量時,它必須與 Options 數組中的某個元素匹配。但是,如果調用沒有 Options 參數的 uiconfirm,則 DefaultOption 必須是 'OK' 或 'Cancel'。
如果指定整數,則它必須在 [1, n] 范圍內,其中 n 是 Options 數組的長度。如果調用沒有 Options 參數的 uiconfirm,則 DefaultOption 必須是 1 或 2。
'CancelOption' :取消選項,指定為字符向量、字符串標量或整數。取消選項指定與對話框中的取消操作對應的選項。
當指定字符向量或字符串標量時,它必須與 Options 數組中的某個元素匹配。但是,如果調用沒有 Options 參數的 uiconfirm,則 CancelOption 必須是 'OK' 或 'Cancel'。
如果指定整數,則它必須在 [1, n] 范圍內,其中 n 是 Options 數組的長度。如果調用沒有 Options 參數的 uiconfirm,則 CancelOption 必須是 1 或 2。
3.2.3 定義 CloseFcn 回調
CloseFcn 名稱-值對組參數可用於在對話框關閉時執行特定的任務。在 App 設計工具中定義 CloseFcn 回調在 App 設計工具中以私有函數的形式編寫該回調。
首先選擇接下來,編寫私有函數:
function mycallback(app,src,event) display(event.SelectedOption); end
將該命令添加到要顯示對話框的回調函數中。在本例中,目標圖窗為 app.UIFigure,這是圖窗在 App 設計工具中的默認名稱。
uiconfirm(app.UIFigure,'Close document?','Confirm Close',...
'CloseFcn',@(src,event)mycallback(app,src,event));
當用戶觸發創建對話框的回調時,對話框將顯示在 App 中。
關閉操作回調函數,指定為下列值之一:
-
函數句柄。
-
第一個元素是函數句柄的元胞數組。元胞數組中的后續元素是傳遞到回調函數的參數。
-
包含有效 MATLAB 表達式的字符向量(不推薦)。MATLAB 在基礎工作區計算此表達式。
此回調可用於在對話框關閉時執行特定的任務。
如果將 CloseFcn 指定為函數句柄(或包含函數句柄的元胞數組),則 MATLAB 會將包含事件數據的 struct 作為輸入參數傳遞給回調函數。此 struct 包含下表中介紹的字段。

3.3 示例演示
function plot1ButtonPushed(app, event)
selection=uiconfirm(app.UIFigure,'請查看數據的單位是否正確','確認對話框');
if selection=="確定"
n=100;
s=0:app.L1/n:app.L1;
j=n/2;
q=0:app.dQ:app.Q;
m=length(q);
cla(app.qlUIAxes)
hold(app.qlUIAxes,'on');
z=0;
z0=1/m;
for i=q
d=uiprogressdlg(app.UIFigure,'Title','Please Wait',...
'Message','數據處理中','value',z);
xishu(app,i,app.L1,s,j);
z=z+z0;
end
close(d);
end
