【问题标题】:Interface Builder show all @IBInspectable in cascadeInterface Builder 以级联方式显示所有@IBInspectable
【发布时间】:2019-07-23 09:05:59
【问题描述】:

我可能太复杂了,但这就是我想要的:

@IBDesignable
class A: UIView {
    @IBInspectable var title: String = "" {
        didSet {
            setNeedsLayout()
        }
    }
}

@IBDesignable
class B: UIView {
    var firstView: A = A()
    var secondView: A = A()
}

B 类有 2 个 @IBDesignable 类,所以如果我想直接在 Interface Builder 中自定义 B,我不能,因为我无权访问 2 个 A 类。

起初我创建了一个协议来列出 A 类中的所有元素,但是当一个视图需要 A 类的 2 项或更多项时,我不能使用它。

是否有人认为我的故事板中只有 1 个 B 类并且可以自定义两个 A 类?

【问题讨论】:

  • 不太确定,但您认为将这些变量设为公开可能会有所帮助。我会尝试通过编码来检查它。
  • 我尝试了很多事情以防万一发生了一些神奇的事情,但没有。只需再次检查,“显示属性检查器”选项卡仍然没有自定义 @IBInspectable。
  • 给 B 可检查的属性,例如firstViewTitle 和 secondViewTitle。
  • @matt 我的主要问题是,如果明天我将 IBInspectable titleColor 添加到 A 类,我没有什么可以阻止我不要忘记将 2 IBInspectable var 添加到 B 类。
  • 太糟糕了。如果您在情节提要中看不到 A,则无需检查。你只能检查你能看到的。

标签: ios swift xcode ibdesignable ibinspectable


【解决方案1】:

不太确定您是否可以这样做。即使您使用 Apple Library 类,这通常也是不可能的,例如 UIButton 有一个 UIView 和一个 UILabel。

尽管这些不同的类和某些事情可以通过覆盖here 解释来实现

但我可以在这里为您提供一个技巧。在情节提要中为对象 B 创建的对象中,您可以添加 User Defined Runtime Attributes,如下所示 -

firstView.title & secondView.title

我知道这可能不是您正在寻找的答案,但这只是一种解决方法。

【讨论】:

    猜你喜欢
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多