SfondoUtilizzo di più file pennino con un controller a vista singola?
sto usando Interface Builder per creare l'interfaccia utente per un app su cui sto lavorando. L'app ha un'unica schermata che mostra una serie di pulsanti. Facendo clic su un pulsante viene visualizzata una vista associata che si sovrappone ai pulsanti. Facendo clic su un altro pulsante si nasconde la precedente visualizzazione di sovrapposizione e ne viene visualizzata un'altra.
Anche semplificare la gestione dell'interfaccia utente in IB Ho deciso di creare più file di pennino per ogni vista secondaria che deve apparire quando si fa clic sul relativo pulsante. Sto quindi caricando il file del pennino della vista secondaria nel metodo viewDidLoad
del controller di visualizzazione utilizzando la classe UINib
.
L'idea alla base di questo è stato evitare di avere più viste impilate l'una sull'altra in un singolo file di pennini poiché sarebbe difficile da manipolare in IB. Avrei potuto creare tutte le viste in codice, ma ciò richiederebbe un sacco di codice noioso in quanto i layout di ciascuna vista secondaria sono piuttosto complessi (con più viste secondarie).
Esempio di codice che carica una vista secondaria da un file di pennino.
- (void)viewDidLoad
{
UINib *aSubViewNib = [UINib nibWithNibName:@"aSubView" bundle:nil];
NSArray *bundleObjects = [aSubViewNib instantiateWithOwner:self options:nil];
// get root view from bundle array
UIView *aSubView = [bundleObjects objectAtIndex:0];
[self.view addSubview:aSubView];
...
Il codice sopra riportato viene ripetuto per le altre viste.
Per riepilogare, ho un'app per iPhone a schermo singolo con viste stratificate visualizzate/nascoste facendo clic sui pulsanti. Ciò si ottiene con un controller a vista singola con un file pennino associato e una serie di file di pennini aggiuntivi per le viste secondarie che vengono caricati nel metodo viewDidLoad del controller di visualizzazione.
Domande!
Scusate per la lunga introduzione ma volevo essere molto chiaro di cosa sto facendo.
- Il mio approccio è sbagliato o insolito?
- Ci sono potenziali problemi a farlo in questo modo?
- Cosa hanno fatto altre persone quando hanno bisogno di un'interfaccia dinamica e vuoi ancora conservare tutto in Interface Builder?
Note
Prima che qualcuno si chiede perché non ho solo visualizzo il punto di vista sotto su un nuovo schermo e utilizzare la barra di navigazione, mi permetta di dire che ho ottime ragioni e io capisco iOS Linee guida per l'interfaccia utente. Il caso d'uso di cui sopra non è esattamente il mio caso d'uso, ma è quello che descrive chiaramente il problema senza impantanarsi nella mia app di sviluppo.
Inoltre, so che avrei potuto scrivere tutte le viste secondarie come codice, ma ogni vista secondaria ha un layout complesso di viste secondarie e sarebbe un sacco di codice e fare casino per cercare di farli sembrare giusti.
Grazie in anticipo.
Quindi, per il mio caso di utilizzo in cui l'unica ragione per cui ho diviso le viste in file di pennini separati è stato per semplificare la gestione di tali visualizzazioni in IB, pensi che il mio approccio sia sicuro da utilizzare o infranga le linee guida di Apple? – Camsoft
Non esiste alcuna regola o linea guida riguardo a ciò che stai facendo. Stai bene a questo proposito. – Jim
Ho aggiunto un esempio di un componente software reale utilizzato da molti sviluppatori. Vedi la mia risposta sopra per maggiori dettagli. – Jim