【问题标题】:doesn't return windows不返回窗口
【发布时间】:2009-12-10 08:35:50
【问题描述】:

我需要在 iPhone 上的窗口中添加一个视图,所以我尝试这样做:[[UIApplication sharedApplication] windows],但它接缝的是该数组只包含一个窗口。

谁能告诉我我没有写什么/我需要做什么?

【问题讨论】:

标签: iphone cocoa-touch uiapplication


【解决方案1】:

试试

[[UIApplication sharedApplication] keyWindow];

如果你想找到你的应用程序的窗口。

【讨论】:

  • 如果 [[UIApplication sharedApplication] windows] 没有返回任何内容,那么 [[UIApplication sharedApplication] keyWindow] 将抛出异常
  • @Morion,在 UITableViewController 中,在 MPMoviePlayerController 开始播放之后。 Apple 的示例效果很好。
【解决方案2】:

您的 AppDelegate 类将保存窗口(作为属性)。每个应用程序只能获得一个窗口。在大多数情况下,您应该只从 AppDelegate 直接将视图添加到窗口——对于正常的子视图管理,请使用 viewControllers。

【讨论】:

  • MPMoviePlayerController 接缝开始进入不同的窗口,但我需要它在 MoviePlayer 窗口上添加叠加层。
  • 啊,我明白了。我发现了这篇关于它的帖子,它声称能够在 3.0 上做到这一点:amromousa.com/2009/03/22/… 但是,通常的警告——苹果可能会生气。
【解决方案3】:

嗯,我发现了问题。实际上没有设置正确的条件,[[UIApplication sharedApplication] windows] 只返回一个窗口。尽管如此,[[UIApplication sharedApplication] keyWindow] 还是会抛出异常。

这是因为当MPVideoPlayerController 开始播放时,它开始创建一个新窗口,但是,可能不会立即完成这项工作。它几乎是立即创建的,但不是立即创建的。

【讨论】:

    【解决方案4】:

    你可以这样做。

    UIView *controllersView = [myViewController view];
    
    [window addSubview:controllersView];
    

    【讨论】:

    • 它在视频窗口上。所以我无权查看。
    • 那个变量“window”是从哪里来的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    相关资源
    最近更新 更多