我的朋友幫我解決這個問題
這裏是解決方案:
在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:
沒必要用一個UIWindow的makeKeyAndVisible
方法,第二個窗口上始終將第一個頂部。
UPD2:
再次更新我的回答,也許這將是爲別人有用。
沒有makeKeyAndVisible
我不能使用UITestField
太我註釋掉的代碼和麪臨的另一個問題:
我有UIViewController
,創造另一個UIViewController
實例該控制器內,並呼籲[self presentViewController:...]
。在提出UIViewController
我創建loginVC
,但是當我打電話
[[[AppDelegate sharedDelegate] window] makeKeyAndVisible];
提出的viewController消失,但第一個視圖控制器仍然有這個控制器presentedViewController
,所以我不能提出其他視圖控制器。
我的解決方案是在makeKeyWindow
上更改makeKeyAndVisible
。
我已經更新了屏幕截圖,如您所見,導航欄始終可見,這不是問題 – derpoliuk