私はそれが[myWindow resignKeyWindow]
と[self.window makeKeyAndVisible]
のように簡単だと思っていましたが、私はそうは思わない...あなたは何をすべきか知っていますか?UIWindowを削除するには?
感謝:)
私はそれが[myWindow resignKeyWindow]
と[self.window makeKeyAndVisible]
のように簡単だと思っていましたが、私はそうは思わない...あなたは何をすべきか知っていますか?UIWindowを削除するには?
感謝:)
は、それがあなたのUIWindowsが削除されるとき、いくつかのコードを実行するために上書きされることを意図して、直接-resignKeyWindow
を起動しないでください。古いウィンドウを削除するには、UIWindowの新しいインスタンスを作成してそれを-makeKeyAndVisible
にする必要があります。古いウィンドウはキーステータスを辞退します。 iOS 4では、参照先がない場合は、古いUIWindowをガベージコレクションすることさえあります。これをiOS 3.xで行うと、悲惨な結果になります。後で警告した。
これは実際にどのウィンドウがkeyWindowであるかを変更しますが、application.windows ....から削除しているようには見えません。 – samvermette
カスタムウィンドウのスーパービューはnullです。ちょうどそれがNO – tristan
に隠されているこれを下の答え(Nikolai Ruheから)実際に窓を取り除く方法を教えてください –
私は同じ問題を抱えている可能性があります。
Windows、特にrootWindowControllerを削除して解除する前に、すべての強力な参照を破棄する必要があります。私は、コードの下に任意のウィンドウを削除するのに十分であると思う:
[self.window.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
self.window.rootViewController = nil;
[self.window resignKeyWindow];
[self.window removeFromSuperview];
他の投稿のいくつかで述べたように、あなたは 'resignKeyWindow'を直接呼び出すべきではありません。 – ThomasW
App Delegateからウィンドウを削除することはできません。ただし、作成されたカスタムウィンドウはすべて削除できます。
ウィンドウを削除するには、まず置換えを行う必要があります。そこで、デフォルトのウィンドウを取得します。
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
これで、appdelegate.windowプロパティでデフォルトのウィンドウにアクセスできるようになりました。
元のカスタムナビゲーションコントローラを入手してください。自己をrootviewcontrollerとして割り当てます。
makekeyandvisibleを呼び出すと、すべてのウィンドウが削除され、appdelegatesウィンドウがキーウィンドウとして割り当てられます。あなたが作成したNavigationControllerとしてrootViewControllerを設定して、あなたは行きたい!
DEMONavigationController *demoNav = [[DEMONavigationController alloc]initWithRootViewController:self];
[appDelegate.window makeKeyAndVisible];
appDelegate.window.rootViewController = demoNav;
ありがとうございます!
アプリのウィンドウ以外のウィンドウを持っている場合は、それを使用...
let mainWindow = UIApplication.shared.delegate?.window
mainWindow??.makeKeyAndVisible()
あなたはもう少しあなたが何であるかを点で最大手の込んだ/説明できますか?質問があまりにも明確ではないので。私は間違っているかもしれません。 –