2016-03-14 2 views
1

Мне нужно, нажав кнопку, заменить NSWindow.contentViewController новым ViewController. Для этого я написал следующий код:Заменить NSWindow contentViewController с новым ViewController с таким же размером окна

let g = GameViewController() 

if self.window!.styleMask & NSFullScreenWindowMask != NSFullScreenWindowMask { 
    let ws = NSScreen.mainScreen()?.frame.size 
    let width : CGFloat = g.view.frame.width 
    let height : CGFloat = g.view.frame.height 

    let frame = NSRect(origin: NSMakePoint(((ws?.width)!-width)/2, ((ws?.height)!-height)/2), size: CGSize(width:width, height:height)) 

    self.window?.setFrame(frame, display: true, animate: true) 
} 

self.window?.contentViewController = g 

Когда NSWindow не в полноэкранном режиме, этот код работает хорошо. Хотя, когда NSWindow находится в режиме FullScreen, GameViewController задается с его размером по умолчанию, а не изменяет размер, пока не произойдет событие изменения размера.

Как я могу создать NSViewController, чтобы занять все пространство на экране?

ответ

0

Если вы используете Раскадровку:

let storyboard = NSStoryboard(name: "Main", bundle: nil) 
         if let homeViewController = (storyboard.instantiateControllerWithIdentifier("HomeViewController") as? NSViewController){ 
          let windowController = NSWindowController(window: Constants.appDelegate!.window) 
          windowController.contentViewController = homeViewController 
          windowController.showWindow(Constants.appDelegate!.window) 
         } 

Надеется, что это поможет. Happy Codding

+0

Нет, я не использую Раскадровка. Я добавляю все компоненты программно. – Alessandro

Смежные вопросы