2017-06-14 2 views
1

ファイル所有者をUserBannerViewに設定しました。 この.xibファイルを使用するストーリーボードのUIViewもUserBannerViewに設定されています。 エラーは発生していませんが、シミュレータまたはストーリーボードには表示されません。iOS - @IBDesignable .xibファイルがストーリーボードまたはシミュレータに表示されない

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

わからないお役に立てば幸いです。また、あなたのXIBファイルで、あなたのクラスはfileOwnerとしてsettedされていることを確認し

あなたawakeFromNibメソッドを実装してみてくださいprepareForInterfaceBuilder方法

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

を追加あなたは達成しようとしています。 'UserBannerView'のためのクラスがあり、xibから同じビューをunarchivingしてそれ自身に追加しているようです。あなたの 'init?(coder aDecoder:NSCoder)'は決して呼び出されないので、あなたの 'setup'メソッドは決して呼び出されません。どのような混乱! –

+0

私は私のストーリーボードに、UserBannerViewとしてのクラスを持つビューを持っています。これはinitを呼びます(コーダーaDecoder:NScoder)。次に、私はUserBannerView.xibファイルを持っています – Charles

+0

そして.xibファイルの 'UserBannerView'にどのようなクラスが設定されていますか? –

答えて

1

これは何

関連する問題