Ho sempre utilizzato il metodo loadNibNamed per il caricamento di viste personalizzate nei controller di visualizzazione, ma ora sto cercando di evitare di chiamare tale metodo all'esterno della visualizzazione personalizzata per renderlo più riutilizzabile in modo che se una persona usa il mio visualizzazione personalizzata che solo avrà bisogno di istanziare la vista senza loadFromNib, ad esempio:Uiview personalizzato con pennino in rapido senza utilizzare loadFromNib nel controller di visualizzazione
var myView: MyView = MyView()
E l'aggiunta di questo punto di vista alla visualizzazione del controller della vista sarebbe sufficiente, la visualizzazione personalizzata verrà caricato il pennino dentro se stesso. Sto cercando di farlo in Swift, in objC ho trovato il codice come quello di questa risposta: UIView and initWithFrame and a NIB file. How can i get the NIB file loaded? Ma in rapida non posso usare l'init utilizzata la risposta:
- (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;
}
I avere questo metodo e si conclude con un ciclo infinito:
override init(frame: CGRect) {
super.init(frame: frame)
self.loadFromNibNamed("MyView")
}
ho anche provato ad aggiungere un altro vista all'interno MyView come IBOutlet come l'altra risposta dice e utilizzando tutte le INIT:
@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)
}
Ma ho ancora l'errore del ciclo infinito.
Non riesco a trovare una buona soluzione e mi sta facendo impazzire !! Qualcuno può aiutarmi per favore? Grazie!
La vostra NIB contengono una vista della classe 'MyView' o' MediaPlayerView', resp.? Questa potrebbe essere la ragione del ciclo infinito, e indovinerei "init (coder:)" come causa. – clemens