A volte desidero creare sottoclasse di UIViewController per alcune personalizzazioni dell'app. Per esempio. qualcosa che tutti i controller di visualizzazione dovrebbero eseguire durante viewDidLoad o viewWillAppear o così.Qual è la differenza tra UIViewController e UITableViewController
Ovviamente sottoclassi UIViewController e vado da lì e tutti i controller di visualizzazione ereditano da quello. Ma alcuni dei controller eseguono tabelle. E c'è UITableViewController progettato per questo scopo.
Quindi, sottoclassi anche UITableViewController e faccio solo le stesse cose lì. Quale non sembra essere la cosa più intelligente nei termini di OOP. E non c'è ereditarietà multipla ecc
E come UITableViewController eredita da UIViewController ...
Ora mi chiedo il motivo per cui non mi riferisco solo a creare il mio controller della vista tabella che eredita dalla mia molto personale controller della vista sottoclasse e aggiunge tutte le cose da tavola. Ma cosa è "tutta la roba del tavolo"?
- C'è il codice dello scheletro che xcode aggiunge a ogni nuovo controller di visualizzazione tabella. Abbastanza utile ma che può essere facilmente spostato in frammenti di codice.
- C'è la dichiarazione dei protocolli UITableViewDelegate e UITableViewDataSource. Affabile. L'implementazione di tali metodi deve comunque seguire in ciascuna sottoclasse di UITableViewController.
- Ci sono probabilmente delle implementazioni predefinite ragionevoli di tutti quei metodi obbligatori nel protocollo. Come ad esempio il ritorno 0 per numberOfSectionsInTableView: o nullo per titleForHeaderInSection o 44.0f per heightForRowAtIndexPath: (. Cattivo esempio anche se potrebbe essere più intelligente, non attuando affatto)
Così, nonostante la roba ovvio, ci sono miracoli che prende UITableViewController cura di?
Grazie a tutti quelli che hanno risposto. Questo aiuta molto su questa determinata decisione di architettura. –