Sto creando la mia personalizzata UITableViewCell
da utilizzare come back-end di una cella prototipo. Nella mia classe sovrascrivo il metodo initwithstyle:reuseIdentifier:
per eseguire alcune inizializzazioni personalizzate, ma il mio inizializzatore non viene chiamato. Ho un punto di interruzione sulla prima riga al suo interno, nonché un punto di interruzione su dequeueResusableCellWithIdentifier:
. Il metodo dequeueResusableCellWithIdentifier:
viene chiamato e restituisce una cella inizializzata, ma il punto di interruzione in initwithstyle:reuseIdentifier:
non viene raggiunto. Qualsiasi aiuto sarebbe grande.initwithstyle: riutilizzoIdentificatore: non chiamato
risposta
Se la cella viene creata da un prototipo di storyboard (che è stato dichiarato come classe personalizzata in IB), non verrà creato con initWithStyle...
ma initWithCoder:
, come qualsiasi altro oggetto caricato da un pennino. Se si dispone di un codice di configurazione, dovrebbe essere lì o in awakeFromNib
.
Esiste da qualche parte nei documenti che afferma che initWithCoder viene sempre utilizzato durante il caricamento da un pennino? La tua risposta mi ha aiutato, ma mi piacerebbe leggere i documenti pertinenti nel caso in cui ci fosse qualcos'altro che mi è mancato. –
Buona domanda! Il più vicino che riesco a trovare è [qui] (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaViewsGuide/SubclassingNSView/SubclassingNSView.html), in "Inizializzazione delle istanze di visualizzazione create in Interface Builder" – jrturton
Hmm interessante, suggeriscono di utilizzare awakeFromNib per eseguire qualsiasi impostazione iniziale. Quindi initWithCoder viene sicuramente chiamato ogni volta? –
Con lo storyboard coinvolto, tutto cambia. Questo è il metodo che viene chiamato.
-(id)initWithCoder:(NSCoder *)aDecoder {
if (!(self = [super initWithCoder:aDecoder])) return nil;
// Your code goes here!
return self;
}
Se si utilizza StoryBoarsd allora UITableViewContoller non chiamerà initWithStyle sostituirlo con initWithCoder sarà opere ora
- 1. UITableView cellforrowatindexpath non chiamato
- 2. doFilter non sempre chiamato
- 3. textViewDidEndEditing non è chiamato
- 4. didReceiveRemoteNotification non chiamato
- 5. mouseMoved non chiamato
- 6. non onActivityResult essere chiamato
- 7. BackUpAgentHelperClass non viene chiamato
- 8. initWithNibName non viene chiamato
- 9. DropCreateDatabaseAlways Seed non chiamato
- 10. onServiceConnected() non chiamato
- 11. onPostExecute non viene chiamato
- 12. didSelectRowAtIndexPath: non viene chiamato
- 13. Android onBackStackChanged() non chiamato
- 14. Page_PreInit non chiamato?
- 15. IBAction non viene chiamato
- 16. didFinishNavigation non essere chiamato
- 17. didSelectAnnotationView non chiamato
- 18. CLLocation didupdatetolocation non chiamato
- 19. preferisceStatusBarHidden non chiamato
- 20. Frammento onResume non chiamato
- 21. apply_authorization_limits non è chiamato
- 22. glkView drawInRect non chiamato
- 23. TimePickerDialog.onTimeSetListener non chiamato
- 24. forwardInvocation non viene chiamato?
- 25. handleWatchKitExtensionRequest non viene chiamato
- 26. OnBackPressed non viene chiamato?
- 27. - [NSResponder swipeWithEvent:] non chiamato
- 28. willSendRequestForAuthenticationChallenge non chiamato
- 29. View.onMeasure() non chiamato
- 30. Tomcat ServletContextListener.contextDestroyed non chiamato
Mostraci il codice del vostro 'UITableViewDataSource' dove è la creazione e le cellule del rinvio prego. – mattjgalloway
Ho lo stesso problema. Ma non sto usando lo storyboard, lo sto creando a livello di programmazione. Qualcuno sa perché initWithStyle non viene chiamato allora? – Michael