将控件添加到IBDesignable视图的子视图

时间:2016-06-07 17:25:09

标签: swift cocoa interface-builder

假设我在Interface Builder中工作,我创建了一个名为A的IBDesignable视图。 A包含一个名为B的子视图。我希望能够简单地将控件拖到Interface Builder中的B并将它们适当地添加为B的子项,但看起来Interface Builder只希望我使用A。有没有办法告诉A将新的子视图/控件添加到B,或告诉Interface Builder B应该是“活动”视图?

2 个答案:

答案 0 :(得分:0)

我遇到了类似的问题(我认为),我希望我的自定义视图的子视图显示在Interface Builder中,以便我可以连接我的插座和操作。在稍微搜索之后,我意识到你可以通过构建一个XIB文件来实现这一点(主要是在IB中设计自定义UI并将其与代码文件相关联,然后将其作为nib加载到主故事板中)。

我按照本教程将我的自定义子视图显示在我的主故事板中:IBDesignable UIView subclass from XIB tutorial

进入主故事板后,您可以将自定义视图视为一个离散单元(例如,不显示像您在堆栈视图中看到的子视图层次结构)。但在视觉上它看起来就像你期望的那样,并且出口和动作在XIB文件和你的代码之间被连接起来。

答案 1 :(得分:0)

目前似乎无法更改“界面”构建器用作自定义控件所需的视图的视图。无法将拖放目标设置为子视图“ B” ...更多问题,UIView“ A”也不是目标。界面生成器将拖放控件添加到自定义视图下方的UIView中。当您在界面构建器中实例化自定义视图时,它们就是其下方的UIView。该观点就是一种观点。

显然可以做自己想做的事。您可以通过将UITableViewCell拖到项目中来进行探索。该单元将显示由Interface Builder识别的子视图。

以编程方式(没有笔尖),自定义UIView或具有笔尖的自定义UIView都具有父UIView,Interface构建该父UIView来布置控件。在调试过程中,您可以看到创建的图层,并且这些图层也可以在运行时显示。