1. 程式人生 > >用Swift開發Mac App(1)

用Swift開發Mac App(1)

由於原文淺顯到略顯囉嗦,因此翻譯時我有選擇地刪除了部分段落。

開啟Xcode,使用 File\NewProject… 選單,在彈出視窗中選擇 “macOs/Coaca Application”,然後Next。


在接下來的視窗中,配置App資訊。在product name欄中輸入ScaryBugsMac,輸入你的機構名以及機構ID。剩餘欄位保留為空白。

選擇Swift作為開發語言,保持所有選項框反選,document extension欄保留為空白。然後點Next。


然後Xcode會要求你選擇專案儲存路徑。選擇一個物理路徑,然後點選Create。

專案就建立完了,這是一個單視窗App。點選工具欄左上角的Run按鈕,執行這個程式,效果如下圖所示。


首先我們來總結一下。我們使用Xcode模板建立了一個Mac App專案,然後編譯運行了這個空白專案。與iOS開發的最大不同在於:

·      視窗不需要特別指明大小,比如iPhone或iPad螢幕大小——MacApp的視窗是可以通過拖動來改變大小的。

·      Map App可以擁有多個視窗,視窗支援最小化,重排等操作。

然後我們來新建一個View Controller,並在它上面放入App的主介面。使用

 File\New\File… 選單,在彈出視窗中,選擇 OS X\Source\Cocoa Class,然後點Next。


類名填入 MasterViewController, “Subclass of”填入NSViewController。確保“Also create XIB file for user interface” 為勾選,然後點Next。


在最後一個彈出視窗中,點選Create。新的View Controller將顯示在專案導航視窗中:


開啟MasterViewController.xib。需要注意的是,在Mac App中,有大量的類和iOS中都類似,只不過是以NS字首命名。例如NSScrollView、NSLabel、NSButton等。

在右下角的UI Controls面板(位於第三個Tab)中,選中NSTableView將它拖到MasterViewController.xib的畫布中。


不要擔心Table View的大小,我們待會會來處理它。

開啟 AppDelegate.swif在window屬性下面插入如下語句:

var masterViewController:

MasterViewController!

找到 applicationDidFinishLaunching 方法,這個方法在App啟動時呼叫。

注意: 這個方法等同於iOS中的application(_:didFinishLaunchingWithOptions:)方法。

applicationDidFinishLaunching方法內,加入以下語句:

masterViewController = MasterViewController(nibName: "MasterViewController", bundle: nil)

window.contentView.addSubview(masterViewController.view)

masterViewController.view.frame = (window.contentView as NSView).bounds

在 OS X中,視窗(NSWindow物件)總是有一個預設的View,即contentView。它自動佔據整個視窗的大小。當我們想在視窗中使用自己的檢視時,需要用addSubview方法將它新增到contentView的subviews中。

在iOS開發中,我們可以設定將一個View Controller直接設定為視窗的rootViewController屬性,但在OS X中你只能將檢視新增到contentView的subviews,因為OS X中沒有rootViewController的概念。

執行App,你將看到如下畫面: