1

現在の UIViewController の上に新しい UIViewController を表示しようとしています。目的の効果を作成するコード行は次のとおりです。

LoginViewController *loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
UIViewController *rootController = [[[UIApplication sharedApplication] keyWindow] rootViewController];

[rootController presentViewController:loginViewController animated:YES completion:nil];

問題は、ユーザーに目的のアクション (ログアウト) を確認するように求める UIActionSheet を追加したことです。ユーザーがアクションを確認すると、上記の平和なコードを実行しますが、UIActionSheet は依然として keyWindow のままです。したがって、LoginViewController は上部に表示されません (デバッグしようとすると、rootController は null になります)。

私の質問は次のとおりです: UIActionSheet の下にある UIWindow を見つけてそこからルート コントローラーを取得できますか、またはユーザーがログアウト アクションを選択してから上記のコードを実行するときに、プログラムで UIActionSheet を閉じることができますか?

前もって感謝します!

4

3 に答える 3

0

ここでのエリックの答えは、最も信頼できるソリューションです。アクション シートが存在する間は、ビューを追加/アニメーション化できないことに注意してください。また、コントローラーをデリゲートとして設定し、シートがいつ閉じられるかを知るために実際のアクションシートを参照しないと、アクションシートがいつ閉じられるかわかりません。これらは私が現在直面している問題であるため、これは単なる参考情報です。

于 2014-04-11T17:10:31.453 に答える
0

You can reach window by using this code:

UIWindow* window = [[UIApplication sharedApplication] keyWindow];
于 2013-11-08T15:51:14.690 に答える