问题标签 [uiview-hierarchy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
672 浏览

ios - 容器视图和传递数据

我很难将数据传递给位于容器视图中的 tableViewController,如下所示:
在此处输入图像描述
对于上下文,包含两个容器视图的视图控制器本身就是 tabViewController 的第一个选项卡,它充当主视图splitViewController 的详细视图。

首先 - 我是否正确使用容器视图?第一个选项卡的目的是在顶部显示一些过滤器“设置”,这些设置可以通过 push segue 进行编辑(因此它是一个导航控制器),在底部,tableView 的数据将根据过滤器标准进行更新。使用两个容器视图来完成此功能似乎很直观,但我的经验很少,不知道是否有更好的方法,或者容器视图的实用程序是否比看起来更小众。

对于最初的问题 - 假设这个层次结构是有道理的,我很难将数据传递给这个特定的 tableViewController。tabViewController 中还有另外两个选项卡,它们都没有使用容器视图,因此我能够使用 appDelegate 成功遍历层次结构以在这些选项卡中显示数据,如下所示:

我跳过了通过委托将数据分配给每个 masterViewController0/1/2 的代码片段。如前所述,选项卡 2 和 3 有效。Tab 1 在运行时中断了程序,由于“[containerViewController childViewControllers]”返回一个空数组而终止,因此对 objectAtIndex:1 的调用(我希望它引用 tableView)超出了范围。我想知道在程序执行的这一点上是否没有初始化容器视图?但老实说,我不知道。

我认为我的查询与容器视图的关系不大,而与层次遍历有关,因此尽管在有关容器视图的文档中查看了解决方案,但我确实没有找到太多帮助。

提前感谢您的任何提示!

0 投票
1 回答
2279 浏览

ios - 为编程视图层次结构设置自动布局约束?

我正在以编程方式创建我的视图层次结构,如下所示:

这两个 VC 是从 XIB 加载的,在这两种情况下都使用自动布局。一切看起来都不错,但是当我实际执行时,控制台中po [[UIWindow keyWindow] _autolayoutTrace]会出现一些令人担忧AMBIGUOUS LAYOUT的警告:

所以我的问题是,我该如何摆脱它们?或者更一般地说,您如何使用自动布局以编程方式设置窗口和视图层次结构?

我发现有关以编程方式设置窗口的文档非常模糊。即使我观看了所有三个关于此事的 WWDC 视频,我也无法掌握如何做到这一点。

编辑:我遇到的问题似乎只与新的 iOS 7 有关。由于它在 NDA 下,我将把这个讨论转移到指定的 Apple 开发者论坛。

0 投票
4 回答
6342 浏览

ios - 如何在 AVCaptureVideoPreviewLayer 上显示叠加层

我需要在 AVCaptureVideoPreviewLayer 上显示图像(帧)覆盖。我怎样才能做到这一点?

在视频输出层上添加新视图不起作用。预览层出现在所有视图的顶部。

我的视图层次结构:

  • 主视图
    • 叠加视图
    • 视频输出视图

我的帧出现在视频输出视图下

0 投票
1 回答
748 浏览

ios - 如何查找从哪个视图控制器调用方法

提供更多细节:我正在使用 FBLoginView。我正在为我的 LoginViewController 使用故事板和单独的 xib 文件。在我的应用程序中,我有一个 loginViewController,它是一个 FBLoginViewDelegate。还有一个 SettingsViewController,它是一个 FBUserSettingsDelegate。我的 loginView 中有一个跳过按钮,以便以访客身份而不是 facebook 用户身份登录。

现在我要做的是:当应用程序打开时,我会显示一个演练视图,其中包括底部的登录视图。当用户使用 Facebook 登录按钮登录时,会通过 facebook sdk 自动执行以下方法:

在这种方法中,我正在执行主视图的转场。

但是人们也可以选择先以访客身份登录,然后转到“设置”,他们仍然可以登录 Facebook。恰好执行上述相同的方法!

但是后来我的 segue 没有被识别,因为我不再在 Walkthrough 视图控制器中。现在我在设置视图控制器中,它在我的故事板的层次结构中处于完全不同的位置。

所以我的问题是:我怎么知道这个方法是从哪个视图控制器调用的?

我收到此警告:尝试显示不在窗口层次结构中的视图!

感谢您的所有帮助。

0 投票
8 回答
53890 浏览

ios - 在自动布局中居中子视图的 X 会引发“未准备好约束”

我有一个自定义 UIView 子类,它正在通过 nib 初始化。

-awakeFromNib中,我正在创建一个子视图并尝试将其置于其父视图的中心。

这会中断,并导致以下输出:

0 投票
1 回答
379 浏览

android - 复合视图中的android双重布局对象

当您像这样创建复合视图并为其扩展 xml 布局文件时:

这会膨胀一个带有根的 xml,如下所示:

您最终会得到一个在 LinearLayout 中带有 LinearLayout 的布局层次结构(或者我在为 xml 中的布局对象定义标签字符串时得出结论,以防我的应用程序崩溃)。

我错了吗?有没有更好的方法来做到这一点并防止这种双重布局?

0 投票
3 回答
5325 浏览

ios - 什么是_UILayoutGuide?

我需要知道_UILayoutGuide它是什么,它做了什么以及为什么它几乎总是出现在UIViewas a的层次结构中。subviewframe = (0,0,0,0)

0 投票
1 回答
186 浏览

ios - 在一个 xib 文件中加载视图时选择特定的 UIView

我在导航栏上有 5 个分段的控制段,我的应用程序要求我只能在一个段内更改视图。现在我UIViews在一个xib中有两个。我设置了一个整数标志,根据该标志,我需要更改视图。我发布这个是因为两个视图在一个 xib 中都有一个表格视图,它们会有不同的行数,不同的cellForRowAtIndexPathdidSelectRowAtIndexPath. 所以两个问题是 - 如何根据标志选择特定视图以及如何管理两个 UIView 的委托方法作为文件所有者会产生问题?如果有人建议使用 UIViewController 创建一个单独的类,那么如何覆盖/替换该特定段的视图?

请注意,我没有使用故事板。应用程序是基于 XIB 的唯一

0 投票
1 回答
154 浏览

ios - UIViewcontroller 在 uinavigationcontroller 堆栈中不可见

在窗口中,我添加了一个 uinavigation 控制器作为窗口的 rootviewcontroller。说第一个视图控制器是根 viewcontroller。在这第一个 viewcontroller 中,我正在触发一个重复间隔为 15 秒的 nstimer 来调用 api 并更新 UI.I我在视图中正确地使这个触发的计时器失效。一段时间后,比如 150 秒后,我正在推送到另一个视图控制器,比如第二个视图控制器。

Firstviewcontroller 和 secondviewcontroller 具有相应的弹出视图的后退按钮。在 secondviewcontroller 的视图中确实加载了我已经记录了类名。当导航控制器从 firstviewcontroller 推送到 secondviewcontroller 时,我看到了日志。但是如果我单击 secondviewcontroller 的后退按钮,日志是 [firstviewcontroller backbutton] 和第一个 viewcontroller事件正在运行。即 secondviewcontroller 不可见,然后屏幕变黑。

我的项目是弧形的。

我知道这可能是一个愚蠢的问题,但我真的很头疼!

0 投票
1 回答
208 浏览

uiviewcontroller - 你能配置一个容器视图控制器,使包含的视图控制器尊重覆盖视图吗?

我有一个UIViewController子类 A,它是其他视图控制器的容器。包含的视图控制器的视图放置在 A 的容器视图中。A 的容器视图是全屏的。A 也有一个自定义栏形式的附件视图,它与容器视图的底部重叠,类似于UIToolbar.

当我将视图控制器 B 添加为 A 的子级,并且 A 将 B 的视图放在其容器视图中时,我希望 B 的视图自动尊重 A 的附属视图。例如,如果 B 是 a UITableViewController,我希望 BUITableView自动修改其内容插图以尊重 A 的附件视图。

有没有办法配置 A 以便 B 的视图自动执行此操作?或者当B添加到A时,A是否必须手动修改B的视图?

我试图覆盖 A 的 top/bottomLayoutGuide 以返回我自己的布局对象。这似乎不起作用,因为 -topLayoutGuide/-bottomLayoutGuide 似乎从未被调用,并且属性是只读的,因此您不能只设置自己的布局指南。

不需要 A 对 B 的观点有深入了解的最佳方法是什么?