无法连接到 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 中的子视图的主要内容,如果未能解决你的问题,请参考以下文章