3

我正在编写一个 iPad 应用程序,并试图UIWindow在我的应用程序的主窗口顶部显示第二个。我要做的主要事情是创建一个登录窗口(如何使用 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];
}

我期待在这里看到一个大的红色屏幕,但这并没有发生 - 没有任何变化。最终,我希望在顶部浮动一个较小的窗口。但现在我只想看到一扇窗户。

4

3 回答 3

25

如果您使用 ARC 代码,则您的窗口在showOtherWindow:返回后会立即被释放。尝试分配otherWindow给持久对象中的 ivar。

于 2013-04-09T17:53:58.110 回答
0

将窗口的指针分配给 __strong 实例变量 (ivar) 或强属性。关闭窗口后将 ivar 或属性设置为 nil。

于 2013-04-09T17:58:51.947 回答
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];
于 2014-10-22T15:36:16.037 回答