如何将 UIView 插座连接到自定义子视图

Posted

技术标签:

【中文标题】如何将 UIView 插座连接到自定义子视图【英文标题】:How to connect UIView outlets to a custom subview 【发布时间】:2012-10-19 13:58:34 【问题描述】:

我还是 xcode / ios 的新手,遇到以下问题:

为了显示一些移动调试信息,我将一个 UIview 作为插座属性添加/连接到我的一个 Viewcontroller。此视图是 UIview 的自定义子类。现在我添加了一些 UIlabels 作为该视图的子视图,并希望将这些标签的插座连接拖到我的 customUIview.h 文件中,以便将这些标签作为我的自定义 UIview 类的属性进行访问(无需直接从查看控制器)。

问题在于界面构建器(我使用的是 Storyboards/xcode4.3)无法解决问题。我可以将插座连接到 ViewControllerClass.h 但不能连接到我的子视图的 .h 文件。 谁能指出问题出在哪里?

【问题讨论】:

查看IBOutlet 声明会很有帮助。它们是UILabel 类型的吗? 【参考方案1】:

刚刚解决了问题。在 customview.h 文件中手动键入属性插座声明后,我可以将它们从那里按 ctrl-drag-connect 连接到 interfacebuilder 中相应的 UIlabel 对象。只在这个方向有效!

还是谢谢

【讨论】:

不确定自您发布后 Xcode 中是否发生了变化,但我只能通过拖动 而不 从目标中的出口按住 CTRL 键来做到这一点-C 文件到情节提要上的视图。如果我按住 CTRL 键,当我单击代码文件中的插座图标时,我只会得到一个上下文菜单。 只有在拖动到实际的界面/故事板视图时才对我有用,而不是 IB 左侧的界面对象列表。 我在 XCode 7 中遇到了这个问题,显然它仍然存在,这就是解决方案! (从类的 IBOutlet 的出口点拖到文件中)。为我在 IB 中的视图作为接口对象列表工作。【参考方案2】:

将您的自定义视图类从“UIView”更新为界面构建器中的“自定义视图”类。 现在您可以通过 ctrl+拖动按钮或文本字段到相应的自定义类来建立连接。

【讨论】:

这似乎适用于自定义原型 UITableViewCells,可能是由于它们特有的一些魔法,但它不适用于我的任意 UIView 子类。对于他们,我不得不使用 tib 发布的答案。【参考方案3】:

问题解决了!由于三年前的一篇有趣的 SO 帖子(关于连接到 UIView 的子视图),我发现一个人只是从动作或出口圈(在 .h 文件中)拖动(不是 Ctrl_drag!)到控件,就是这样。即使控件位于与子类 UIView 不同的视图中,也能完美运行。尽管您总是拖离圆圈,但与出口和操作同样适用。

【讨论】:

以上是关于如何将 UIView 插座连接到自定义子视图的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义子视图的宽度设置为没有宽度限制的父 UIView 的 1/3?

为啥 swift uiview 不会连接到视图控制器?

隐藏视图时如何使用自动布局移动其他视图?

IBOutlets/actions 和自定义子视图

使用 Swift 在 Xcode 6 中使用 xib 在自定义 uiview 中获取 SIGABRT

多个 UIView 的重叠