框架中的自定义 ui 组件未呈现到故事板

Posted

技术标签:

【中文标题】框架中的自定义 ui 组件未呈现到故事板【英文标题】:Custom ui component from framework not rendered to story board 【发布时间】:2017-12-10 13:05:38 【问题描述】:

我正在创建一个包含一些可重用 UI 组件的 swift 框架。

当我在另一个应用程序中导入这个框架时,我能够以编程方式添加自定义组件。

但是,如果我在故事板上添加 UIView 并将其类更改为 customComponent,我将无法在故事板上看到它的预览。因此,我无法将此框架分发给其他开发人员,因为他们无法在 InterfaceBuilder 中可视化组件。

虽然,我可以在运行时看到组件,但它降低了在情节提要中使用框架的效率。

我已关注link 开发 swift 框架。

有两个项目 Library 和 SampleApp。

Libray : 这是一个 swift 框架,它作为一个自定义 ui 组件作为 MyButton。它是非常基本的用户界面,只是为了避免任何混淆。

SampleApp : 此应用程序使用库在示例屏幕上显示 MyButton

请告诉我如何在任何其他应用程序中从框架中查看自定义 UI 组件的预览。

编辑1:

我已上传应用建议的示例代码,但无法解决此问题。 Code

编辑 2: 纠正了教程的断开链接。我没有使用插座来简化它。

编辑 3: 有两个项目:Library 和 SampleApp

我有 MyButton.swift 作为库项目中的自定义小部件。

我在StoryBoard 中添加了 UIView 并将其类更改为 MyButton(来自库框架)

【问题讨论】:

【参考方案1】:

当然有!

导入框架后:

import MyFramework

在 IB 中,选择框架模块:

编辑:

当然,我假设您已经制作了自定义组件IBDesignable

编辑 #2:

应该不需要“导入”到您的故事板中。您要做的就是确保您的视图控制器代码中包含import,并且您的故事板的视图控制器是该子类。例如,这是一个名为 MainViewController 的视图控制器:

并将您的视图设置为受其控制:

【讨论】:

我应该如何在故事板中导入框架,因为它是一个 xml 代码。是的,我已将我的组件设为 IBDesignable。我可以在运行时看到小部件,但不能在界面生成器预览中看到。 您不需要这样做。只需import 进入情节提要“视图控制器”指向的视图控制器。默认情况下 - 在单视图项目中,它被称为 ViewController。我将在我的答案中添加屏幕截图。 是的,我正在这样做,但在故事板上看不到预览。我已经分享了示例代码。如果你能检查一下我错过了什么,那将非常有帮助 我下载了你的样本。不知道我在看什么。在“应用程序”方面,什么都不是。故事板和视图控制器代码不包含任何内容。在框架方面,我只看到“.h”文件,暗示... Obj-C 框架?您的问题另有说明。 StoryBoard 上有一个 UIView。我已将其类更改为 MyButton。它不可见,因为我们无法在故事板上看到预览。但是如果您运行它一次,您将能够在屏幕上看到按钮。添加了有问题的屏幕截图。

以上是关于框架中的自定义 ui 组件未呈现到故事板的主要内容,如果未能解决你的问题,请参考以下文章

故事板自定义类被忽略

未呈现 MVC 4 中的自定义包

JSF 2 - ui:repeat 中的自定义输入文本组件问题

故事板中的自定义导航控制器

Sencha 和其他触控框架中的自定义 UI 设计

使用 TypeScript 时如何将 prop 传递给 material-ui@next 中的自定义根组件?