我正在编写一个iPad应用,我正试图在我的应用中的主窗口顶部显示第二个UIWindow
。我要做的主要是创建一个登录窗口(how to present a login, with UISplitViewController?),似乎在这里创建第二个窗口可能是一个不错的选择。
我做了一个非常简单的应用来试试这个。当用户点击按钮时,我正试图显示第二个窗口。这是代码:
- (IBAction)showOtherWindow:(id)sender {
UIWindow* otherWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
otherWindow.hidden = NO;
otherWindow.clipsToBounds = YES;
otherWindow.windowLevel = UIWindowLevelStatusBar;
otherWindow.backgroundColor = [UIColor redColor];
[otherWindow makeKeyAndVisible];
}
我期待在这里看到一个大红色的屏幕,但这不会发生 - 没有任何变化。最后,我想让一个较小的窗户浮在上面。但是现在我只想看到一个窗口。
答案 0 :(得分:25)
如果您使用的是ARC代码,则showOtherWindow:
返回后会立即取消分配窗口。尝试将otherWindow
分配给持久对象中的ivar。
答案 1 :(得分:0)
将窗口的指针指定给__strong实例变量(ivar)或强属性。关闭窗口后,将ivar或属性设置为nil。
答案 2 :(得分:0)
在iOS中,您有一个窗口可以填满所有屏幕。要做你想做的事,你可以创建一个UIViewController / UIView并以模态模式打开它。
在主视图控制器中,您可以执行类似
的操作UILoginViewController *login = [[UILoginViewController alloc] init];
login.modalPresentationStyle = UIModalPresentationFormSheet; // or whatever you prefer
login.completionWithItemsHandler = hdl;
[self presentViewController:login animated:YES completion:nil];