【问题标题】:UIWindow addSubview is not working in ios 9UIWindow addSubview 在 ios 9 中不起作用
【发布时间】:2015-10-01 10:48:39
【问题描述】:

以下代码在 ios 8 中运行良好,但在 ios 9 中我得到没有内容的白页。

MRForceUpdateView * mForceUpdateView = [[[NSBundle mainBundle] loadNibNamed:@"MRForceUpdateView" owner:self options:nil] objectAtIndex:0];

mForceUpdateView.frame = self.view.frame;

UIWindow * window = [[[UIApplication sharedApplication] delegate] window];

[window addSubview:mForceUpdateView];

请建议一种在应用级别添加自定义视图的方法。

提前致谢。

【问题讨论】:

  • 请问你为什么要在UIWindow上加一个subView,你的用例是什么?
  • @DevAndArtist 我需要显示服务器关闭自定义视图,如果任何请求失败 bcoz 服务器已关闭,并且用户当时可以在任何控制器上。
  • 好的,但是你在这个示例中的帧计算现在对我来说没有任何意义。如果这是同一区域(例如整个屏幕)顶部的叠加层,您可以将该视图放在 rootViewController 内的所有内容之上,并在需要时显示它。但我猜你有你自己的设计逻辑。

标签: ios xcode ios9 uiwindow


【解决方案1】:

取消选中“使用大小类别”选项,然后返回并重新检查它可以解决此问题。

  • 在项目导航器中,选择情节提要或 xib 文件。
  • 文件的内容在 Interface Builder 中打开。
  • 选择视图 > 实用程序 > 显示文件检查器。
  • 在 Interface Builder Document 部分中,取消选中“Use Size Classes”复选框。
  • 离开菜单。回来打勾 再次选中“使用尺寸等级”复选框。

【讨论】:

  • 愚蠢的 XCode,我花了 2 天时间解决了这个问题,这个解决方案就像魅力一样 :)
【解决方案2】:

尺寸类的解决方案对我来说很奇怪,因为我现在通过在 iOS 9 的窗口中添加子视图没有遇到任何问题。

我还想指出,当设置 rootViewController 时 - 窗口层次结构中的所有现有视图都将被删除。

来自 UIWindow 文档:

根视图控制器提供窗口的内容视图。将视图控制器分配给该属性(以编程方式或使用 Interface Builder)将视图控制器的视图安装为窗口的内容视图。如果窗口具有现有的视图层次结构,则在安装新视图之前删除旧视图。

因此,您必须确保在设置 rootViewController 后将视图添加到窗口层次结构中。

例如,当第一个控制器被加载时 - 您只能延迟加载该视图一次。

【讨论】:

    【解决方案3】:

    尝试使用[window.rootViewController.view addSubview: view];

    【讨论】:

    • 我不能,假设我在不同的控制器中,我想显示弹出窗口,如果我添加 rootviewController 那么它将不可见..
    【解决方案4】:

    我遇到了同样的问题并通过简单地退出/强制退出 Xcode & Simulator(Cmd + option + Esc) 来修复它然后重新启动和清理 (Cmd + Shift + k)。有时 Xcode 行为不端,我只能希望我早点尝试过以节省大量时间。

    【讨论】:

      【解决方案5】:

      试试

      view.alpha = 0

      在 ViewController 和 viewDidLoad 函数中

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多