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 错误:无法更新自动布局状态

无法将自定义 IBDesignable 类链接到情节提要上的 UIButton

Swift 无法从 @IBDesignable 类设置视图的高度

@IBDesignable 无法使用 Swift 3 呈现类实例并崩溃代理

@IBDesignable错误:无法更新自动布局状态

@IBDesignable 错误:IB Designables:无法更新自动布局状态:Interface Builder Cocoa Touch Tool 崩溃