1

我不想将 uialertview 用于弹出窗口,这让用户有机会在 ios 上对应用程序进行评分。我想使用自定义的弹出窗口,但这没有出现。除了使用来自 Internet 的 iRate 类之外,我还创建了一个 xib,其中包含我想要显示的弹出窗口,并且我在 .h 中从 :NSObject 更改为 :UIViewController。我注释了 uialertview 的所有代码,并在将触发的方法 promptForRating 中,我使 xib 中的 uiview 可见,但显然 uiview 是 nil。

- (void)promptForRating
{
    rateView.hidden = NO;
}

有人对让这个弹出窗口出现有什么建议吗?

4

1 回答 1

2

我想我现在明白了.. 如果你想显示一个视图,它必须嵌入到一个视图控制器中。或者在另一个已经嵌入的视图中。

你能做的是

  • 访问 UIApplication 的 sharedApplication
  • 获取该 UIApplication 的所有 UIWindows(以相反的顺序,因为您的 myView 应该在顶部)
  • 选择默认的 UIWindow
  • 将您的 myView 添加为 UIWindow 的子视图

至少这是 SVProgressHUD 正在做的事情。

这是一些示例代码

if(!myView.superview){
    NSEnumerator *frontToBackWindows = [[[UIApplication sharedApplication]windows]reverseObjectEnumerator];

    for (UIWindow *window in frontToBackWindows)
        if (window.windowLevel == UIWindowLevelNormal) {
            [window addSubview:myView];
            break;
        }
}

第一行是确保您的视图在 atm 不可见(在您的上下文中可能不需要)。要关闭视图,请将其从其父视图中删除。

于 2013-04-19T10:09:16.797 回答