显示另一个UIWindow的麻烦

时间:2013-04-09 17:50:27

标签: ios ipad uiwindow

我正在编写一个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];
}

我期待在这里看到一个大红色的屏幕,但这不会发生 - 没有任何变化。最后,我想让一个较小的窗户浮在上面。但是现在我只想看到一个窗口。

3 个答案:

答案 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];