2017-04-15 19 views
0

來引用視圖窗口以及Xcode和Swift中的所有更改,我無法弄清楚如何在一個stotyboard驅動的項目中以我的方式來處理視圖的窗口在使用XIB的項目中這樣做。新來的MacOS編程所以提前道歉,如果這是基本的東西:如何在Swift 3.x中使用Storyboards/Cocoa

當使用故事板,我怎麼使用例如更改視圖的窗口狀態:

window.titleVisibility = .hidden 
window.setContentSize(size) 

在XIB驅動的項目,我'使用

@IBOutlet weak var window: NSWindow! 

但這似乎不與故事板以相同的方式工作。我如何使用故事板做同樣的動作?任何幫助感謝!

回答

2

您可以獲取您的視圖窗口訪問其窗口屬性的引用。需要注意的是它不能做內視做負載,但是你可以使用一個懶惰的初始化視圖控制器創建一個窗口屬性:

lazy var window: NSWindow! = self.view.window 

你可以做裏面的方法你的窗口定製viewWillAppear中:

import Cocoa 


class ViewController: NSViewController { 

    lazy var window: NSWindow! = self.view.window 

    override func viewWillAppear() { 
     super.viewWillAppear() 
     window.titleVisibility = .hidden 
    } 
} 
+0

如果我這樣做,然後使用window.titleVisibility = .hidden在viewDidLoad()應用程序崩潰,但它在viewWillAppear()中工作。有沒有更好的地方去擁有它? – leinadsey

+0

'mainwindow.titleVisibility = .hidden'是錯誤的'window.titleVisibility = .hidden' –

+0

您是否嘗試過我的代碼?你什麼意思是更好的地方?在viewDidLoad裏面不能完成。 'view.window'屬性總是會返回nil –

0

這似乎工作:

if let window = NSApplication.shared().mainWindow { 
    window.titleVisibility = .hidden 
} 

這是一個不錯的方式做到這一點?

+0

只需在viewWillAppear方法內添加'view.window?.titleVisibility = .hidden'。 –

+0

如果你的視窗不是mainWindow,該怎麼辦? –

+1

工作 - 謝謝! – leinadsey

相關問題