【问题标题】:How do I add a UIView as a subview of the topmost view without knowing which view it is?如何在不知道它是哪个视图的情况下将 UIView 添加为最顶层视图的子视图?
【发布时间】:2013-06-05 19:56:36
【问题描述】:

我要添加视图:

[aView addSubview:myNewView];

我要做的是找出在任何给定时刻显示的最顶层视图是什么视图,因此我可以在其顶部动态添加一个视图。例如,假设我的视图堆栈如下所示:

  1. 模态相机视图(在所有内容之上,当前正在显示)
  2. 标签视图
  3. 导航视图
  4. 查看
  5. 表格视图

我想在 0 处的任何视图上动态放置一些东西。

有谁知道如何做到这一点,或者是否有可能?

【问题讨论】:

  • [self.view subviews] 返回一个 NSArray。您可以通过 [self.view subviewAtIndex:0]; 访问索引 0 处的视图
  • 您的意思是笼统地讲,还是专门想在UIImagePickerController 的视图之上叠加一个视图?

标签: ios objective-c cocoa-touch uiview subview


【解决方案1】:

视图层次结构不是由堆栈表示,而是由树表示,因此没有the topmost view

如果您只想在所有其他视图之上添加一个视图,请将其添加到 UIWindow,就像在 this answer 中所做的那样:

UIWindow* mainWindow = [[UIApplication sharedApplication] keyWindow];
[mainWindow addSubview:myNewView];

如果你所说的视图真的是指视图控制器,那么我认为没有办法“遍历”当前堆栈,因为它取决于堆叠视图控制器的类,并且与视图层次结构的原因相同: 一个视图控制器可以有很多孩子——例如UITabBarController

【讨论】:

  • 正是我需要的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多