私の友人はこの問題で私を助けてくれました
解決策は次のとおりです。
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:
makeKeyAndVisible
UIWindowのメソッドを使用する必要はありません。2番目のウィンドウは常に最初のウィンドウの上にあります。
UPD2:
もう一度私の答えを更新してください、多分それは誰かのために役立つでしょう。
smakeKeyAndVisible
を使用できなかっUITestField
たため、そのコードのコメントを外し、別の問題に直面しました。
私は、このコントローラー内UIViewController
に別のインスタンスを作成し、を呼び出します。提示された私は作成していますが、私が呼び出すときUIViewController
[self presentViewController:...]
UIViewController
loginVC
[[[AppDelegate sharedDelegate] window] makeKeyAndVisible];
提示されたviewControllerは消えますが、最初のView ControllerにはまだこのコントローラーがありますpresentedViewController
。そのため、他のViewControllerを提示することはできません。
私の解決策はで変更でしmakeKeyAndVisible
たmakeKeyWindow
。