问题标签 [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.
ios - 容器视图和传递数据
我很难将数据传递给位于容器视图中的 tableViewController,如下所示:
对于上下文,包含两个容器视图的视图控制器本身就是 tabViewController 的第一个选项卡,它充当主视图splitViewController 的详细视图。
首先 - 我是否正确使用容器视图?第一个选项卡的目的是在顶部显示一些过滤器“设置”,这些设置可以通过 push segue 进行编辑(因此它是一个导航控制器),在底部,tableView 的数据将根据过滤器标准进行更新。使用两个容器视图来完成此功能似乎很直观,但我的经验很少,不知道是否有更好的方法,或者容器视图的实用程序是否比看起来更小众。
对于最初的问题 - 假设这个层次结构是有道理的,我很难将数据传递给这个特定的 tableViewController。tabViewController 中还有另外两个选项卡,它们都没有使用容器视图,因此我能够使用 appDelegate 成功遍历层次结构以在这些选项卡中显示数据,如下所示:
我跳过了通过委托将数据分配给每个 masterViewController0/1/2 的代码片段。如前所述,选项卡 2 和 3 有效。Tab 1 在运行时中断了程序,由于“[containerViewController childViewControllers]”返回一个空数组而终止,因此对 objectAtIndex:1 的调用(我希望它引用 tableView)超出了范围。我想知道在程序执行的这一点上是否没有初始化容器视图?但老实说,我不知道。
我认为我的查询与容器视图的关系不大,而与层次遍历有关,因此尽管在有关容器视图的文档中查看了解决方案,但我确实没有找到太多帮助。
提前感谢您的任何提示!
ios - 为编程视图层次结构设置自动布局约束?
我正在以编程方式创建我的视图层次结构,如下所示:
这两个 VC 是从 XIB 加载的,在这两种情况下都使用自动布局。一切看起来都不错,但是当我实际执行时,控制台中po [[UIWindow keyWindow] _autolayoutTrace]
会出现一些令人担忧AMBIGUOUS LAYOUT
的警告:
所以我的问题是,我该如何摆脱它们?或者更一般地说,您如何使用自动布局以编程方式设置窗口和视图层次结构?
我发现有关以编程方式设置窗口的文档非常模糊。即使我观看了所有三个关于此事的 WWDC 视频,我也无法掌握如何做到这一点。
编辑:我遇到的问题似乎只与新的 iOS 7 有关。由于它在 NDA 下,我将把这个讨论转移到指定的 Apple 开发者论坛。
ios - 如何在 AVCaptureVideoPreviewLayer 上显示叠加层
我需要在 AVCaptureVideoPreviewLayer 上显示图像(帧)覆盖。我怎样才能做到这一点?
在视频输出层上添加新视图不起作用。预览层出现在所有视图的顶部。
我的视图层次结构:
- 主视图
- 叠加视图
- 视频输出视图
ios - 如何查找从哪个视图控制器调用方法
提供更多细节:我正在使用 FBLoginView。我正在为我的 LoginViewController 使用故事板和单独的 xib 文件。在我的应用程序中,我有一个 loginViewController,它是一个 FBLoginViewDelegate。还有一个 SettingsViewController,它是一个 FBUserSettingsDelegate。我的 loginView 中有一个跳过按钮,以便以访客身份而不是 facebook 用户身份登录。
现在我要做的是:当应用程序打开时,我会显示一个演练视图,其中包括底部的登录视图。当用户使用 Facebook 登录按钮登录时,会通过 facebook sdk 自动执行以下方法:
在这种方法中,我正在执行主视图的转场。
但是人们也可以选择先以访客身份登录,然后转到“设置”,他们仍然可以登录 Facebook。恰好执行上述相同的方法!
但是后来我的 segue 没有被识别,因为我不再在 Walkthrough 视图控制器中。现在我在设置视图控制器中,它在我的故事板的层次结构中处于完全不同的位置。
所以我的问题是:我怎么知道这个方法是从哪个视图控制器调用的?
我收到此警告:尝试显示不在窗口层次结构中的视图!
感谢您的所有帮助。
ios - 在自动布局中居中子视图的 X 会引发“未准备好约束”
我有一个自定义 UIView 子类,它正在通过 nib 初始化。
在-awakeFromNib
中,我正在创建一个子视图并尝试将其置于其父视图的中心。
这会中断,并导致以下输出:
android - 复合视图中的android双重布局对象
当您像这样创建复合视图并为其扩展 xml 布局文件时:
这会膨胀一个带有根的 xml,如下所示:
您最终会得到一个在 LinearLayout 中带有 LinearLayout 的布局层次结构(或者我在为 xml 中的布局对象定义标签字符串时得出结论,以防我的应用程序崩溃)。
我错了吗?有没有更好的方法来做到这一点并防止这种双重布局?
ios - 什么是_UILayoutGuide?
我需要知道_UILayoutGuide
它是什么,它做了什么以及为什么它几乎总是出现在UIView
as a的层次结构中。subview
frame = (0,0,0,0)
ios - 在一个 xib 文件中加载视图时选择特定的 UIView
我在导航栏上有 5 个分段的控制段,我的应用程序要求我只能在一个段内更改视图。现在我UIViews
在一个xib中有两个。我设置了一个整数标志,根据该标志,我需要更改视图。我发布这个是因为两个视图在一个 xib 中都有一个表格视图,它们会有不同的行数,不同的cellForRowAtIndexPath
和didSelectRowAtIndexPath
. 所以两个问题是 - 如何根据标志选择特定视图以及如何管理两个 UIView 的委托方法作为文件所有者会产生问题?如果有人建议使用 UIViewController 创建一个单独的类,那么如何覆盖/替换该特定段的视图?
请注意,我没有使用故事板。应用程序是基于 XIB 的唯一
ios - UIViewcontroller 在 uinavigationcontroller 堆栈中不可见
在窗口中,我添加了一个 uinavigation 控制器作为窗口的 rootviewcontroller。说第一个视图控制器是根 viewcontroller。在这第一个 viewcontroller 中,我正在触发一个重复间隔为 15 秒的 nstimer 来调用 api 并更新 UI.I我在视图中正确地使这个触发的计时器失效。一段时间后,比如 150 秒后,我正在推送到另一个视图控制器,比如第二个视图控制器。
Firstviewcontroller 和 secondviewcontroller 具有相应的弹出视图的后退按钮。在 secondviewcontroller 的视图中确实加载了我已经记录了类名。当导航控制器从 firstviewcontroller 推送到 secondviewcontroller 时,我看到了日志。但是如果我单击 secondviewcontroller 的后退按钮,日志是 [firstviewcontroller backbutton] 和第一个 viewcontroller事件正在运行。即 secondviewcontroller 不可见,然后屏幕变黑。
我的项目是弧形的。
我知道这可能是一个愚蠢的问题,但我真的很头疼!
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 的观点有深入了解的最佳方法是什么?