摘要:CoCoa 模態視窗
新手發文,如有謬誤,歡迎指正.😁
(註 : 一個轉向Mac 開發的.net 開發人員)
模態視窗:只能切換至其他應用程式視窗,並不能與本身應用程式視窗切換,開啟的話會鎖定應用程式,直到關閉後才解除鎖定。
非模態視窗:是一個獨立運行的視窗,允許其他應用程式視窗和自身應用程式視窗切換,不影響自身應用程式的操作。
我們先來看看在.net上 模態視窗和非模態視窗的使用
Windows :
- 模態視窗
MainWindow mainWin = new MainWindow();
mainWin.Show();
- 非模態視窗
MainWindow mainWin = new MainWindow();
mainWin.ShowDialog();
那麽在Mac cocoa 上要怎麽實現呢?
Mac CoCoa :
- 非模態視窗
WindowController *windowcontroller = [[WindowController alloc]initWithWindowNibName:@"WindowController"];
[windowcontroller showWindow:nil];
//為了防止這個視窗在程式碼塊執行完成後被自動釋放 我們需要將他存取到一個數組中.
//首先我們需要在@interface 中預設一個property
@property (nonatomic, strong) NSMutableArray *controllers;
// ㄟ 那麽完善上面的程式碼之後是這樣子
if(!controllers){
self.controllers = [[NSMutableArray alloc]init];
}
WindowController *windowcontroller = [[WindowController alloc]initWithWindowNibName:@"WindowController"];
[self.controllers addObject:windowcontroller];
[windowcontroller showWindow:nil];
//OK Running
- 模態視窗
模態視窗需要做兩個操作:
//實作一個Controller並 RunModalforWindow
WindowController *windowcontroller = [[WindowController alloc]initWithWindowNibName:@"WindowController"];
//將視窗置頂到自身程式
[[windowcontroller window] setLevel: kCGStatusWindowLevel];
//Run
NSApp runModalForWindow: windowcontroller.window];
//當需要關閉該程式視窗 我們需要在WindowController中設定一個funtion
//這個funtion 在WindowController關閉視窗時 執行下面程式碼
[NSApp stopModal];
OK, 本次教學到此結束