Benutzerdefinierte UIView mit Feder in swift ohne Verwendung loadFromNib in der view-controller

Benutzte ich immer die loadNibNamed Methode für das laden von benutzerdefinierten Ansichten in der Ansicht-Controller, aber jetzt versuche ich, zu vermeiden, fordern, dass die Methode außerhalb der benutzerdefinierten Ansicht für die es mehr wiederverwendbar, so dass, wenn eine andere person verwendet meine eigene Sicht, die er nur brauchen zu instanziieren der view ohne loadFromNib, zum Beispiel:

var myView: MyView = MyView()

Durch und fügen Sie diese Ansicht, um die Ansicht Steuerung Ansicht wäre genug, die benutzerdefinierte Ansicht wird geladen Sie die Spitze in sich.
Ich versuche zu tun, ist es bei Swift, in ObjC, die ich gefunden habe code, ähnlich dem, der diese Antwort: UIView und initWithFrame und eine NIB-Datei. Wie bekomme ich die NIB-Datei geladen?
Aber im swift-ich kann nicht in der init verwendet, in der Antwort:

- (id)initWithFrame:(CGRect)frame 
{
    self = [super initWithFrame:frame];
    if (self) {
        //Initialization code.
        //
        [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
        [self addSubview:self.view];
    }
    return self;
}

Habe ich diese Methode und es endet mit einer Endlosschleife:

override init(frame: CGRect) {
    super.init(frame: frame)
    self.loadFromNibNamed("MyView")
}

Habe ich auch versucht, indem eine andere Sicht in MyView als IBOutlet wie die andere Antwort sagt, und mit allen inits:

@IBOutlet var view: UIView!

override init() {
    super.init()
    NSBundle.mainBundle().loadNibNamed("MediaPlayerView", owner: self, options: nil)
    self.addSubview(self.view)
}

override init(frame: CGRect) {
    super.init(frame: frame)
    NSBundle.mainBundle().loadNibNamed("MediaPlayerView", owner: self, options: nil)
    self.addSubview(self.view)
}

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    NSBundle.mainBundle().loadNibNamed("MediaPlayerView", owner: self, options: nil)
    self.addSubview(self.view)
}

Aber immer noch den Fehler der Endlosschleife.

Ich kann nicht finden, eine gute Lösung, und es macht mich verrückt!! Jemand kann mir bitte helfen? Danke!

Hat deine Feder enthält eine Ansicht der Klasse MyView oder MediaPlayerView, resp.? Dies könnte der Grund für die endlos-Schleife, und ich würde vermuten init(coder:) als die Ursache.

InformationsquelleAutor diegomen | 2015-01-23

Schreibe einen Kommentar