无法连接到 IB 中的子视图

Posted

技术标签:

【中文标题】无法连接到 IB 中的子视图【英文标题】:Can't Wire to Subview in IB 【发布时间】:2013-05-18 02:32:26 【问题描述】:

快速提问。使用 IB,我在 ViewController 中有一个子视图。在那个子视图中,我有一个标签,我想将它连接到我的自定义子视图类。但是,IB不会让我。我错过了什么?

我还尝试以编程方式添加标签;但是,似乎从未设置过框架。我可以硬编码标签的大小,但我不能让它取决于我的子视图的框架大小,因为框架和边界总是零矩形,即使在视图以非零出现在我的视图控制器中之后尺寸。这里的任何想法也将不胜感激。

【问题讨论】:

当您说“在那个子视图中我有一个标签”时,它是如何到达那里的?您是否有一个单独的视图 .xib 文件(我们称之为 MyCustomView),并且在 MyCustomView.xib 中您有标签?或者您是否在 OuterViewController.xib 的子视图“内部”有标签?我问是因为将您自己的自定义视图之一添加到 IB 中的视图通常不会显示自定义视图的子视图(例如您的标签)。 【参考方案1】:

您实际上是完全正确的。它不会让您从 IB 连接到 Xcode 4.6.2 中自定义视图的标题

我个人会提交 Radar,但我想做更多的研究来证明它,因为这是我永远不会使用的模式,所以我不会。

幸运的是你可以绕过它

确保您的自定义视图在 IB 中正确配置

假设你正在设置这样的东西

然后你可以在你的标题中手动声明

@interface MyCustomView : UIView

@property (weak) IBOutlet UILabel *label;

@end

然后拖动FROM属性旁边出现的点TO标签。

或者拖动FROM自定义视图的右键HUDTO标签。

这两种情况都无法通过从标签拖动到视图来实现。

【讨论】:

啊,太棒了,谢谢。我觉得自己像个白痴,没有尝试去另一个方向。非常感谢。 我想我会提出一个错误,因为你曾经能够做到这一点,我昨晚用一个 OSX 项目尝试了它,但它在那里也不起作用。一些奇怪的事情正在发生【参考方案2】:

在你的头文件中,你需要将标签定义为IBOutlet,然后你可以从你的文件所有者拖拽到标签。

IBOutlet * lblSomeLabel;

【讨论】:

在文件所有者是 ViewController 而不是应该连接到该插座的自定义视图的情况下,您可能需要提供更多指导。【参考方案3】:

禁用 AutoLayOut 并重试。

【讨论】:

这是一个误导性的评论

以上是关于无法连接到 IB 中的子视图的主要内容,如果未能解决你的问题,请参考以下文章

无法与 IB 中的约束建立出口连接

如何将 UITabBar 项目连接到 IB 中的视图控制器

.NET Core 无法连接到 SQL DB

将 UITextView 添加为 UIView 中的子视图,然后添加到 UIScrollView

百度地图无法连接网络?怎么回事

如何将标签栏项目连接到操作?