Sto provando a sottoclasse UIView. Ho già un inizializzatore designato e voglio avere la possibilità di inizializzare la mia vista personalizzata dal codice o dal file Nib. Quindi, Apple ci ha detto di usare l'inizializzatore designato, ma non lo fanno da soli - initWithCoder:
non chiama initWithFrame:
. Cosa devo fare per far chiamare il mio inizializzatore designato in entrambe le situazioni? Non c'è modo di farlo?Come eseguire l'override di initWithFrame: e initWithCoder: in sottoclasse di UIView?
risposta
Imballare l'inizializzazione speciale in un unico metodo. Può essere privato (dichiarato in .m). Quindi eseguire l'override di entrambi gli inizializzatori e chiamare il metodo init dall'interno di essi.
- (void)myInitialization
{
//do your stuff
}
- (id)initWithFrame:(CGRect)aRect
{
self = [super initWithFrame:aRect];
if (self)
{
[self myInitialization];
}
return self;
}
- (id)initWithCoder:(NSCoder*)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self)
{
[self myInitialization];
}
return self;
}
facciamo non è necessario includere '- (instanceType) init' initializer ..? Nel caso in cui. Sono nuovo all'obiettivo C. – shashwat
Non è necessario - le sottoclassi di 'UIView' sono raramente inizializzate da _simple_' init'. In alcuni casi potrebbe avere senso includere anche 'init', vale a dire: se un certo tipo di vista verrebbe in genere inizializzato con una cornice fissa o qualcosa del genere. –
Come hai detto:
initWithFrame: - Si consiglia di implementare questo metodo. L'utente può anche implementare metodi di inizializzazione personalizzati in aggiunta a, o anziché questo metodo.
initWithCoder: - Implementare questo metodo se si carica la vista da un file nib Interface Builder e la visualizzazione richiede personalizzato inizializzazione.
Quello che vorrei fare è solo un metodo che entrambi chiamerebbero, che avrebbe un comportamento comune che si desidera implementare nel proprio UIView
.
- 1. Sottoclasse UIView initWithFrame non viene chiamato?
- 2. UIView: layoutSubviews vs initWithFrame
- 3. initWithFrame di UIView non funziona?
- 4. Come ottenere dimensioni di un UIView personalizzato aggiunto tramite storyboard in initWithCoder :?
- 5. Come chiamare initWithFrame di Objective C UIView a Swift
- 6. Sottoclasse UIView: drawRect non chiamato
- 7. Caricamento di una sottoclasse UIView da problemi di dimensione NIB
- 8. Creazione di una sottoclasse UIView in grado di attivare segues
- 9. Come creare la sottoclasse UIView con xib?
- 10. Rileva l'autorotazione nella sottoclasse UIView
- 11. initWithFrame: trigger init?
- 12. iOS - Crea sottoclasse UIView per il rettangolo arrotondato
- 13. problema Strano ARC non rilasciando Ivar in UIView sottoclasse
- 14. Differenza tra initWithNibName e initWithCoder
- 15. Applicando NSLayoutConstraints ad una sottoclasse UIView
- 16. UITapGestureRecognizer non viene attivato nella sottoclasse UIView
- 17. Sottoclasse UIView di iOS, disegnare il testo trasparente sullo sfondo
- 18. Swift UIView generico sottoclasse con emissione protocollo
- 19. Come utilizzare la sottoclasse UIView personalizzata nell'editor XIB con Monotouch?
- 20. Cosa significa? initWithFrame: CGRectZero]
- 21. Quando usi encodeWithCoder: e initWithCoder: su iPhone?
- 22. Layout automatico usando initWithFrame?
- 23. Utilizzo di NSCoding in una sottoclasse di classe personalizzata
- 24. multiplo di UIView con UIBezierPath
- 25. Quando è il momento giusto per animare e aggiungere sottolivelli in una sottoclasse UIView
- 26. Implementazione dei controlli copia/incolla di iphone in una sottoclasse di visualizzazione personalizzata/uiview
- 27. Inizializzazione di una vista con initWithCoder personalizzato
- 28. UIView e AutoresizingMask ignorato
- 29. getIntent() e sottoclasse di Intent
- 30. Modo corretto per caricare un pennino per una sottoclasse UIView
dare uno sguardo qui per favore e vedere il codice di esempio http://stackoverflow.com/a/17798646/381807 – nesimtunc