簡単だと思いましたが[myWindow resignKeyWindow]
、[self.window makeKeyAndVisible]
そうではないと思います… どうすればいいですか?
ありがとう :)
簡単だと思いましたが[myWindow resignKeyWindow]
、[self.window makeKeyAndVisible]
そうではないと思います… どうすればいいですか?
ありがとう :)
ウィンドウを非表示にする正しい方法は、hidden
プロパティを YES に設定することです。windows
UIApplication のプロパティから削除するには、ウィンドウを解放するだけです (ARC では、すべての参照を nil に設定します)。
もちろん、この時点で別のウィンドウを配置する必要があります。
直接呼び出さないでください-resignKeyWindow
。これは、UIWindows が削除されたときに何らかのコードを実行するためにオーバーライドされることを意図していました。古いウィンドウを削除するには、UIWindow の新しいインスタンスを作成してそれを作成する必要があります-makeKeyAndVisible
。古いウィンドウはそのキー ステータスを辞任します。iOS 4 では、古いUIWindowへの参照がなければ、古いUIWindowもガベージ コレクションします。iOS 3.x でこれを行うと、悲惨な結果が生じる可能性があります。警告しました。
アプリ デリゲートからウィンドウを削除することはできません。ただし、作成したカスタム ウィンドウは削除できます。
ウィンドウを取り外すには、まず交換品を提供する必要があります。したがって、デフォルトのウィンドウが表示されます。
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
window
これで、アプリ デリゲートのプロパティを介して既定のウィンドウにアクセスできるようになりました。
オリジナルまたはカスタムのナビゲーション コントローラーを入手します。自分自身を に割り当てrootViewController
ます。
呼び出すmakeKeyandVisible
と、すべてのウィンドウが削除され、アプリ デリゲートのウィンドウがキー ウィンドウとして割り当てられます。rootViewController を作成したばかりのナビゲーション コントローラーに設定すれば、準備完了です。
DEMONavigationController *demoNav = [[DEMONavigationController alloc]initWithRootViewController:self];
[appDelegate.window makeKeyAndVisible];
appDelegate.window.rootViewController = demoNav;
アプリウィンドウ以外のウィンドウがある場合は、それを使用してください..
let mainWindow = UIApplication.shared.delegate?.window
mainWindow??.makeKeyAndVisible()
私は同じ問題を抱えています、それは役立つかもしれません。
ウィンドウ、特に rootWindowController を削除して割り当てを解除する前に、すべての強力な参照を破棄する必要があります。ウィンドウを削除するには、以下のコードで十分だと思います。
[self.window.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
self.window.rootViewController = nil;
[self.window resignKeyWindow];
[self.window removeFromSuperview];