私の友人はこの問題で私を助けてくれました
解決策は次のとおりです。
AppDelegateで、UIWindowプロパティを作成しました。
//AppDelegate.h
@property (nonatomic, strong) UIWindow *loginWindow;
アプリケーション起動時に初期化
//AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
....
self.loginWindow = [[UIWindow alloc] init];
self.loginWindow.windowLevel = UIWindowLevelStatusBar;
self.loginWindow.frame = [[UIScreen mainScreen] bounds];
self.loginWindow.backgroundColor = [UIColor clearColor];
....
return YES;
}
そして、loginVCで:
@interface loginVC ()
@property (nonatomic, weak) UIWindow *loginWindow;
@end
@implementation
....
- (void)show {
// setting up loginVC view
if (!self.loginWindow) {
self.loginWindow = [[AppDelegate sharedDelegate] loginWindow];
}
if (![self.loginWindow.rootViewController isEqual:self]) {
[self.loginWindow setRootViewController:self];
}
self.loginWindow.hidden = NO;
//UPD:
//[self.loginWindow makeKeyAndVisible];
//UPD2:
[self.loginWindow makeKeyWindow];
}
- (void)hide {
// hiding view and stuff
[[[AppDelegate sharedDelegate] loginWindow] setHidden:YES];
//UPD:
//[[[AppDelegate sharedDelegate] window] makeKeyAndVisible];
//UPD2:
[[[AppDelegate sharedDelegate] window] makeKeyWindow];
}
@end
UPD:
makeKeyAndVisibleUIWindowのメソッドを使用する必要はありません。2番目のウィンドウは常に最初のウィンドウの上にあります。
UPD2:
もう一度私の答えを更新してください、多分それは誰かのために役立つでしょう。
smakeKeyAndVisibleを使用できなかっUITestFieldたため、そのコードのコメントを外し、別の問題に直面しました。
私は、このコントローラー内UIViewControllerに別のインスタンスを作成し、を呼び出します。提示された私は作成していますが、私が呼び出すときUIViewController[self presentViewController:...]UIViewControllerloginVC
[[[AppDelegate sharedDelegate] window] makeKeyAndVisible];
提示されたviewControllerは消えますが、最初のView ControllerにはまだこのコントローラーがありますpresentedViewController。そのため、他のViewControllerを提示することはできません。
私の解決策はで変更でしmakeKeyAndVisibleたmakeKeyWindow。