【问题标题】:adding controls to a subview of an IBDesignable view将控件添加到 IBDesignable 视图的子视图
【发布时间】:2016-06-07 17:25:09
【问题描述】:

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

【问题讨论】:

    标签: swift cocoa interface-builder


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      显然可以做你想做的事。您可以通过将 UITableViewCell 拖到您的项目中来探索这一点。该单元格公开了一个由 Interface Builder 识别的子视图。

      无论是以编程方式,没有 nib、自定义 UIView 或带有 nib 的自定义 UIView,都有一个父 UIView,Interface 在其上构建布局控件。在调试期间,您可以看到创建的层,并且在运行时也存在。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-03
        • 2023-03-11
        相关资源
        最近更新 更多