2015-10-15 3 views

ответ

0

Я уверен, что ответ на ваш прямой вопрос «нет»; вы не можете сделать загрузку окна изнутри -viewDidLoad, вы просто находитесь в середине процесса загрузки nib в этот момент, и это то, что оно есть. В зависимости от того, как сконструирован ваш наконечник и внутренних деталей AppKit, вы можете обнаружить, что окно иногда загружается и подключается в -viewDidLoad, но на него нельзя положиться, так как оно не гарантируется. Вероятно, вы захотите использовать -awakeFromNib; он вызывается после того, как все объекты в nib были загружены и инициализированы, поэтому окно должно быть настроено в этой точке.

+1

Проблемы заключается в том, что, на моем взгляде контроллер не загружается из кончика пера, так 'awakeFromNib' не дозвонились. – Ethan

+0

ОК, пожалуйста, добавьте больше контекста на вопрос. – bhaller

+0

Что я хочу знать, это самый ранний момент, когда я могу получить доступ к 'view.window' – Ethan

0

Вы можете получить (или дать название - что является более полезным) окно в этой ситуации в viewDidLayout Например.

наверху в классе ViewController у вас есть

@IBOutlet var bigView: NSView! 
    var toplevel: NSWindow? 

затем добавить

override func viewDidLayout() { 
    super.viewDidLayout() 

    toplevel = bigView.window 
    } 

вы можете запросить toplevel.firstResponder в любом другом месте в коде и получить ответ. , ,

Надеется, что это помогает