【问题标题】:Cannot preview IBDesignable custom component on Interface Builder无法在 Interface Builder 上预览 IBDesignable 自定义组件
【发布时间】:2018-06-18 06:16:38
【问题描述】:

我正在尝试制作一个可以在 Interface Builder 上预览的自定义 UI 组件。首先,我尝试自己编写代码,但无法完成(它适用于构建的应用程序,但无法在 IB 上预览。)

当然,我怀疑我的代码有问题,所以我从我参考的教程中抓取了这个项目。

https://cheesecakelabs.com/blog/building-custom-ui-controls-xcodes-interface-builder/

但结果只是显示一个矩形,而不是在自定义组件中显示两个按钮。 我构建了项目,但它没有对预览生效。

我认为是以下原因之一,但基本上我不知道它的进一步细节。有人知道吗?

  1. InterfaceBuilder 自教程以来发生了一些变化 上面的链接是写的(2017 年 9 月)
  2. 教程一开始就错了
  3. 我在 XCode/InterfaceBuilder 中的配置有误
  4. 我误解了上述教程的目的,并且无法以任何方式预览该自定义组件上的按钮

或者,如果有人在预览此自定义组件方面有成功/失败的经验,也请告诉我。

谢谢!

【问题讨论】:

  • 请分享一些代码。我怀疑您希望看到的两个按钮不是在 IB 生命周期中绘制的,而是在正常的 UIViewController 生命周期中绘制的。
  • 代码与上述链接完全相同。 github.com/ricardo0100/IBComponents

标签: ios xcode interface-builder


【解决方案1】:

显然,当@IBDesignable 控件在 IB 中呈现时,AwesomeView.xib 中按钮的预定义 Title 属性会覆盖用户定义的属性。

不确定这是设计使然还是错误(我倾向于它是错误)。

要绕过它,您可以:

打开 AwesomeView.xib 并删除“按钮 1”和“按钮 2”标题

initNib()末尾添加这一行:

button1.setTitle("", for: .normal)

最初,您只会看到空白按钮...但在 IB 中设置 button1Title 应该可以工作。

【讨论】:

  • 没用...不仅是标题文本,而且按钮本身没有显示在我的位置。
  • 当您打开 Storyboard 时,请确保您已选中 Editor -> Automatically Refresh Views。您可能还需要选择Editor -> Refresh All Views。当您这样做时,您会收到任何错误或警告吗?
  • 谢谢,但两者都不起作用。我也没有收到任何错误。
  • @TakeshiYokemura - 不知道问题出在哪里......我刚刚下载了那个IBComponents GitHub repo的新副本,在Xcode 9中打开它,打开Main.storyboard......然后几秒钟后,我在自定义视图中看到了 2 个按钮。
  • 谢谢。这是一个有价值的信息。这意味着我的 XCode 环境有问题。
猜你喜欢
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 2015-04-07
  • 1970-01-01
  • 2014-03-28
相关资源
最近更新 更多