2016-12-01 4 views
0

이것은 나를 미치게합니다. 나는 메뉴를 통해 열어 내 애플 리케이션에 몇 가지 창문이 있습니다. 이제 새 창이 추가되었지만 windowDidLoad은 호출되지 않습니다. 나는 그것의 applicationDidFinishLaunchingwindowDidLoad가 호출되지 않았습니다. (다시)

paymentWindowController.loadWindow() 

을 발행 할 경우

fileprivate let paymentWindowController = PaymentWindowController(windowNibName:"PaymentWindow") 

AppDelegate의 선언입니다. 내 메뉴는이 PaymentWindowController은/코코아/NSWindowController 새 파일을 통해 만들어 단지 발판이다

@IBAction func showPayments(_ sender: Any) { 
    paymentWindowController.window!.makeKeyAndOrderFront(self) 
} 

를 호출 클릭

:

class PaymentWindowController: NSWindowController { 
    override func windowDidLoad() { 
    super.windowDidLoad() 
    print("never been here") 
    } 
} 

XIB는 단지 하나의 창을 가지고 비계에서. (나는 XIB의 이름을 PaymentWindowController.xib에서 PaymentWindow.xib으로 바 꾸었습니다. 다른 창도 마찬가지였습니다.)

다른 모든 창은 동일한 방식으로 만들어져 예상대로 작동합니다. 하지만이 나쁜 녀석은 꼭 그래야만 효과가있을거야.

또한 프로젝트를 지우고 파생 데이터를 삭제했습니다.

+0

xib 삭제, 프로젝트 정리 및 xib 재 작성을 시도해 보셨습니까? 때로는 사용자 지정 xibs와 같은 문제에 부딪치게되며 때로는 다시 빌드하는 것이 유일한 방법입니다. 아마 당신이 원했던 대답은 아니지만, 그럴 가치가 있습니다! 그 밖에도 비슷한 질문이 있으니 그 질문에 답을 얻을 수있을 것입니다. 나는 그것들로부터 답을 얻을 수 있지만, 그 시점에서 중복 될 것이다. 당신은 아마 그것을 모두 보았을 것입니다. 행운을 빕니다! – user3353890

+0

@ user3353890 정말 머리카락을 당기는 ... 내 대답을 참조하십시오. –

+0

당신이 그것을 알아 낸 것을 기쁘게 생각합니다! – user3353890

답변

0

내가 실제로 호출되는 내 코드에

override func awakeFromNib() { 
    // initialize 
} 

를 추가 할 필요가 있다고 밝혀졌습니다. 왜 내가 왜 비계에 의해 만들어지며 결코 호출되지 않는 windowDidLoad에 속았는지 모르겠다.