尽管使用IBDesignable,但无法在Storyboard中预览自定义UIStackView
问题描述:
我不知道是什么导致了这个问题,但我无法在.storyboard文件中看到我的自定义元素的预览。当我在设备上运行它时,它在这里并且工作正常(看起来与我的.xib文件相同),但在故事板中它只是一个空白区域。尽管使用IBDesignable,但无法在Storyboard中预览自定义UIStackView
而且有两个错误回报。我在互联网上搜索了所有内容,但无法让它们消失。
我的代码:
ReusableStackView.swift:
import UIKit
@IBDesignable
class ReusableStackView: UIStackView {
@IBOutlet var stackView: UIStackView!
@IBOutlet weak var stackButton: UIButton!
@IBOutlet weak var stackLabel: UITextField!
override init(frame: CGRect) {
super.init(frame: frame)
stackViewSetUp()
}
required init(coder: NSCoder) {
super.init(coder: coder)
stackViewSetUp()
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
stackViewSetUp()
stackView.prepareForInterfaceBuilder()
}
func stackViewSetUp(){
Bundle.main.loadNibNamed("ReusableView", owner: self, options: nil)
stackView.frame = self.bounds
stackView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
addSubview(stackView)
}
}
我的视图控制器没有连接到任何ReusableStackView逻辑。
答
我修好了: 取而代之的是addSubview(stackView)
add add addArrangedSubview(stackView)
。现在预览出现在IB中。
我试过清理项目和其他东西。奇怪的是,现在我没有这个警告,并且在设备上运行它时仍然正常工作,但没有预览。我已经用相同的代码尝试过UIView,并且它出现在StoryBoard中。 – codddeer123
这是一个已知的问题,也发生在我身上。干净有时会有所帮助,但它通常是永久性的。提交雷达。 – the4kman