iOS - Cannot get an @IBDesignable .xib file to show up on storyboard or simulator

左心房为你撑大大i 提交于 2019-12-11 06:25:13

问题


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:


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



来源:https://stackoverflow.com/questions/44533610/ios-cannot-get-an-ibdesignable-xib-file-to-show-up-on-storyboard-or-simulato

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!