37

簡単だと思いましたが[myWindow resignKeyWindow][self.window makeKeyAndVisible]そうではないと思います… どうすればいいですか?

ありがとう :)

4

7 に答える 7

97

ウィンドウを非表示にする正しい方法は、hiddenプロパティを YES に設定することです。windowsUIApplication のプロパティから削除するには、ウィンドウを解放するだけです (ARC では、すべての参照を nil に設定します)。

もちろん、この時点で別のウィンドウを配置する必要があります。

于 2013-01-18T17:05:02.403 に答える
16

直接呼び出さないでください-resignKeyWindow。これは、UIWindows が削除されたときに何らかのコードを実行するためにオーバーライドされることを意図していました。古いウィンドウを削除するには、UIWindow の新しいインスタンスを作成してそれを作成する必要があります-makeKeyAndVisible。古いウィンドウはそのキー ステータスを辞任します。iOS 4 では、古いUIWindowへの参照がなければ、古いUIWindowもガベージ コレクションします。iOS 3.x でこれを行うと、悲惨な結果が生じる可能性があります。警告しました。

于 2011-02-27T00:00:37.403 に答える
0

アプリ デリゲートからウィンドウを削除することはできません。ただし、作成したカスタム ウィンドウは削除できます。

ウィンドウを取り外すには、まず交換品を提供する必要があります。したがって、デフォルトのウィンドウが表示されます。

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

windowこれで、アプリ デリゲートのプロパティを介して既定のウィンドウにアクセスできるようになりました。

オリジナルまたはカスタムのナビゲーション コントローラーを入手します。自分自身を に割り当てrootViewControllerます。

呼び出すmakeKeyandVisibleと、すべてのウィンドウが削除され、アプリ デリゲートのウィンドウがキー ウィンドウとして割り当てられます。rootViewController を作成したばかりのナビゲーション コントローラーに設定すれば、準備完了です。

DEMONavigationController *demoNav = [[DEMONavigationController alloc]initWithRootViewController:self];
[appDelegate.window makeKeyAndVisible];
appDelegate.window.rootViewController = demoNav;
于 2016-07-01T14:28:48.883 に答える
0

アプリウィンドウ以外のウィンドウがある場合は、それを使用してください..

let mainWindow = UIApplication.shared.delegate?.window
mainWindow??.makeKeyAndVisible()
于 2018-01-19T06:58:22.673 に答える
-9

私は同じ問題を抱えています、それは役立つかもしれません。

ウィンドウ、特に rootWindowController を削除して割り当てを解除する前に、すべての強力な参照を破棄する必要があります。ウィンドウを削除するには、以下のコードで十分だと思います。

[self.window.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
self.window.rootViewController = nil;
[self.window resignKeyWindow];
[self.window removeFromSuperview];
于 2013-01-08T04:12:27.590 に答える