Cascading Windows
為了改善Windows的位置照卦,我們引入Cascading Windows(級(jí)聯(lián)窗口)的概念色查。
Cascading Windows意味著一個(gè)窗口重疊在之前的窗口之上,并且標(biāo)題欄可見(jiàn)。
Cascading Windows
- 新建一個(gè)WindowController.swift贪绘,繼承自NSWindowController類
- 在
init
方法中添加代碼shouldCascadeWindows = true
import AppKit
class WindowController: NSWindowController {
required init?(coder: NSCoder) {
super.init(coder: coder)
shouldCascadeWindows = true
}
}
Enable the Font Panel
在Storyboard中點(diǎn)擊Menu中的Format,選擇Font央碟,選擇Show Fonts税灌,按住Control拖拽到First Responder,此時(shí)能夠看到許多的方法亿虽,選擇orderFrontFontPanel
菱涤,然后點(diǎn)擊Show Fonts就可以打開(kāi)Font Panel頁(yè)面。
First Responder
Font Panel
Show the Ruler by Default
在 ViewController.swift
中添加 ?TextView
的IBOutlet洛勉,在 viewDidLoad
方法中添加 text.toggleRuler(nil)
粘秆,這樣,TextView
中就會(huì)出現(xiàn)默認(rèn)的ruler控制條了收毫,也就是富文本控制欄攻走。
@IBOutlet var text: NSTextView!
override func viewDidLoad() {
super.viewDidLoad()
text.toggleRuler(nil)
}
Modal Windows
在 Main.storyboard
(其實(shí)新建一個(gè)storyboard也可) 中添加新的WindowController殷勘,并去掉左上角的三個(gè)控制按鈕。并添加相應(yīng)的控件昔搂。
WindowController
@IBOutlet weak var wordCount: NSTextField!
@IBOutlet weak var paragraphCount: NSTextField!
顯示Model玲销,即剛才新建的WindowController:
@IBAction func showWordCountWindow(sender: AnyObject) {
// 1
let storyboard = NSStoryboard(name: "Main", bundle: nil)
let wordCountWindowController = storyboard.instantiateControllerWithIdentifier("Word Count Window Controller") as! NSWindowController
if let wordCountWindow = wordCountWindowController.window, textStorage = text.textStorage {
// 2
let wordCountViewController = wordCountWindow.contentViewController as! WordCountViewController
wordCountViewController.wordCount.stringValue = "\(textStorage.words.count)"
wordCountViewController.paragraphCount.stringValue = "\(textStorage.paragraphs.count)"
// 3
let application = NSApplication.sharedApplication()
application.runModalForWindow(wordCountWindow) // 運(yùn)行一個(gè)新的窗口來(lái)顯示信息
}
}
添加OK按鈕的事件:
@IBAction func dismissWordCountWindow(sender: NSButton) {
let application = NSApplication.sharedApplication()
application.stopModal() // 關(guān)閉打開(kāi)的Model(也就是窗口)
}
將OK按鈕連接到這個(gè)方法上。
WindowController