通过IBInspectable属性实时渲染IBOutlet连接子视图

时间:2014-10-13 14:39:55

标签: ios swift interface-builder ios8

我在iOS 8中第一次使用故事板,到目前为止一直喜欢故事板上的实时渲染方面。但是,我似乎遇到了让我的观点在故事板上正确呈现的障碍。

我有一个容器UIView,它包含与故事板上UILabel的连接,我试图根据标签父容器视图上的IBInspectable属性设置标签的文本

@IBDesignable class ContainerView : UIView {
    @IBOutlet weak var : titleLabel : UILabel!

    @IBInspectable var title : String = "" {
        didSet {
            titleLabel?.text = title
        }
    }

    /* Init functions */

    prepareForInterfaceBuilder() {
        self.titleLabel?.text = title
    }
}

如果我在故事板中设置属性,它会在程序执行时按预期呈现,但无法像我期望的那样在故事板中呈现。我已经检查了我的连接,所有内容似乎都已正确连接。

我的问题是:是否可以通过IBInspectable属性影响IBOutlet连接视图的内容,并让它们在故事板上实时渲染,如果是,我错过了什么或做错了什么?

1 个答案:

答案 0 :(得分:12)

很遗憾,您无法在界面构建器中看到标记为IBOutlet的自定义视图的IBDesignable个对象。如果要在界面构建器中查看出口,则必须使用常规变量IBOutlet,并且必须以编程方式创建对象。

另请注意,如果您需要更改对象的界面构建器中的内容,则必须将属性定义为IBInspectable。目前,以下变量类型对IBInspectable

有效

BoolCGFloatCGPointCGRectCGSizeNSIntegerNSStringUIColorUIImage

我希望这个答案对你来说是充分清楚的。

编辑:我发现以下文章描述了如何做您需要的方法:

http://justabeech.com/2014/07/27/xcode-6-live-rendering-from-nib/

第二次编辑:我尝试了这篇文章并且有效。现在我可以在界面构建器上看到我的插座