iOS - Cannot get an @IBDesignable .xib file to sho

2019-07-31 12:43发布

I have set the file owner to be UserBannerView. The UIView in the storyboard that uses this .xib file is also set to be UserBannerView. I am not getting any errors, yet it won't show up in either the simulator or the storyboard.

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)
    }
}

1条回答
姐就是有狂的资本
2楼-- · 2019-07-31 12:55

Try implementing your awakeFromNib method and add prepareForInterfaceBuilder method

override func awakeFromNib() {
    super.awakeFromNib()
    self.setup()
}

override func prepareForInterfaceBuilder() {
    super.prepareForInterfaceBuilder()
    setup()
}

Also make sure that your class is setted as fileOwner in your xib file

Hope this helps

查看更多
登录 后发表回答