iOS - 无法让 @IBDesignable .xib 文件显示在情节提要或模拟器上
Posted
技术标签:
【中文标题】iOS - 无法让 @IBDesignable .xib 文件显示在情节提要或模拟器上【英文标题】:iOS - Cannot get an @IBDesignable .xib file to show up on storyboard or simulator 【发布时间】:2017-06-14 00:38:47 【问题描述】:我已将文件所有者设置为 UserBannerView。 情节提要中使用此 .xib 文件的 UIView 也设置为 UserBannerView。 我没有收到任何错误,但它不会出现在模拟器或情节提要中。
import UIKit
@IBDesignable class UserBannerView: UIView
var view: UIView!
@IBOutlet weak var userCreditsLabel: UILabel!
@IBOutlet weak var userRenewDateLabel: UILabel!
@IBOutlet weak var userImage: circlePP!
@IBOutlet weak var userMembershipBtn: UIButton!
@IBOutlet weak var userNameLabel: UILabel!
var nibName:String = "UserBannerView"
public override init(frame:CGRect)
super.init(frame: frame)
print("UserBannerView init from frame")
setup()
public required init?(coder aDecoder:NSCoder)
super.init(coder: aDecoder)
print("UserBannerView init from decode")
setup()
override func awakeFromNib()
print("UserBannerView awakeFromNib")
// setup()
func setup()
print("UserBannerView:setup")
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: "UserBannerView", bundle: bundle)
self.view = nib.instantiate(withOwner: self, options: nil).first as! UIView
self.view.frame = bounds
self.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
self.addSubview(self.view)
【问题讨论】:
我的故事板中有一个视图,其类为 UserBannerView,它调用了 init?(coder aDecoder:NScoder)。然后我有一个 UserBannerView.xib 文件 在.xib 文件中为UserBannerView
设置的类是什么?
尝试遵循本指南。我已经这样做了几次,尝试检查您的代码,但没有发现任何问题。所以可能界面生成器中的一些分配没有正确设置。以防万一一步一步尝试:supereasyapps.com/blog/2014/12/15/…
@Pochi 该链接对我有用。感谢您发布它。
【参考方案1】:
尝试实现您的awakeFromNib
方法并添加prepareForInterfaceBuilder
方法
override func awakeFromNib()
super.awakeFromNib()
self.setup()
override func prepareForInterfaceBuilder()
super.prepareForInterfaceBuilder()
setup()
还要确保你的类在你的 xib 文件中设置为 fileOwner
希望对你有帮助
【讨论】:
以上是关于iOS - 无法让 @IBDesignable .xib 文件显示在情节提要或模拟器上的主要内容,如果未能解决你的问题,请参考以下文章
无法将自定义 IBDesignable 类链接到情节提要上的 UIButton
Swift 无法从 @IBDesignable 类设置视图的高度
@IBDesignable 无法使用 Swift 3 呈现类实例并崩溃代理
@IBDesignable 错误:IB Designables:无法更新自动布局状态:Interface Builder Cocoa Touch Tool 崩溃