私の目標は、親がドラッグされたときに子供が一緒に動くように、NSWindowを別のNSWindowに相対的に配置することです。NSWindowを別のウィンドウの子として追加しましたが、永続化しません
私はデバッガを使いこなすと、NSWindowの子育て関係が正しく確立されているのがわかります。しかし、私のコードの後半では、親をフェッチしようとすると同じNSWindowがnilを返します。私はremoveChildWindowを明示的に呼び出すだけで子育てを取り除くことができたと思っていました。子育てを間違って設定しているようなことがない限り、ここでは何も起こっていません。 NSWindowが親子関係を失う他の方法はありますか?
後でsomeFunction(NSWindow* parentWindow) {
NSWindow* wnd = [[NSWindow alloc] initWithContentRect:frame
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
[parentWindow addChildWindow:wnd ordered:NSWindowAbove];
}
:
anotherFunction(NSWindow* window) {
NSWindow* parentWindow = [window parentWindow]; // debugger shows nil
}
は 'window' nilですか? – Willeke
いいえ、それは以前のwndと同じウィンドウです – damonkashu
詳細を提供する必要があります。 parentHandle、または他のオブジェクトは、parentWindowを保持しますか?両方のウィンドウは、あなたが "後で"(親ウィンドウはデバッガによってnilとして表示されます)と記述したポイントで表示されますか? – elasticthreads