Domanda

Sono armeggiare con un app iPad che (come molti applicazioni iPad) non utilizza il sistema di controllo della vista radicale UINavigation, in modo da non avere la proprietà naturale per ogni app "vista". Ho in sostanza, ho due punti di vista fondamentali: una visualizzazione elenco di documenti, e una visualizzazione del documento modifica

.

sto giocando con l'animazione UIView per ottenere da un documento selezionato alla vista di modifica.

Ho anche una barra degli strumenti sulla parte superiore che esiste (con vari pulsanti) in entrambe le "vedute".

Perché non ho UINavigation esecuzione dello spettacolo per me, ho la tendenza a buttare solo più e più cose in un unico NIB e uno controller della vista che possiede l'intero contenitore. Ma ora sto cercando di capire come Segue dalla vista elenco dei documenti alla vista edit se la vista edit vive all'interno di un diverso NIB, preservando la barra degli strumenti anche.

Qualcuno ha pensieri o esperienze su strutture app come questo? Trovo la documentazione carente sulle migliori pratiche in tutto il codice struttura / interfaccia utente per nulla, tranne banali applicazioni uno schermo o applicazioni di navigazione full-on.

Non sei "presunto" per avere view controller padre / figlio che possiedono sottocomponenti dello stesso "schermo", secondo la documentazione, ma questo implica un punto di vista di controllo di massa clacson che contiene praticamente tutto l'app, e che non può essere di destra.

Non so se c'è un "risposta giusta" per questo; Sto cercando alcuni esempi intelligenti o suggerimenti. Nessuno ha toccato a questa domanda in mesi, quindi sto aggiungendo una taglia per generare buona chiacchiere. :)

Grazie!

Aggiorna : Non sto parlando di una vista combinata, che è chiaramente ben gestito da un controller della vista divisa. Invece, dare un'occhiata a applicazioni iWork di Apple (per esempio Pagine) che hanno una vista elenco dei documenti e una modifica parere indipendente, ma questi sono legati da animazione.

Forse la vera domanda è: come è possibile (? O potrebbe ancora) costruire un "contenitore" View Controller come la vista suddivisa o controller di navigazione, te stesso? Stai necessari per costruire il tutto dannata da zero? Ho la sensazione che tu sei, perché sembra essere nascosto cablaggio nell'interazione tra controller di vista. Se è così, pensieri su questo?

È stato utile?

Soluzione

Credo che l'unico cablaggio nascosto nel controller di vista è la creazione parentViewController, che è necessario per sostenere le categorie dichiarate per la spaccatura e la navigazione.

Visualizza i controllori sono progettati per essere nidificati, con ogni controller possedere una parte della gerarchia della vista. L'unico obiettivo di progettazione è che nessun controller della vista raggiungere nella vista gerarchia di un altro controllore. Un controllore vista padre di solito hanno alcuni chiamano per l'aggiunta di controller bambino in modo che possa impostare la cornice della vista all'interno della gerarchia della vista di sua proprietà. Un controller di vista bambino non dovrebbe fare nulla per la superview della vista che controlla, come quello è di proprietà di un altro controllore. Non si deve impostare il centro o telaio della vista che controlla.

Per esempio, un controller di navigazione ha un metodo di spinta, in cui si elimina la vista precedente regolatore, aggiunge la nuova vista controllore, e imposta il telaio della vista appena aggiunto. In generale, un controller della vista genitore è libero di fissare la cornice della vista di un controllore del bambino, ma non i limiti.

Se si desidera cambiare l'animazione di un controller di navigazione, credo che si dovrebbe iniziare implementando ogni metodo con un animato: argomento. Impostare l'animazione quindi chiamare eccellente con la bandiera d'animazione prima di commettere l'animazione.

Altri suggerimenti

Non ho provato la cosa multipla-View-Controller al di fuori di quelli UIKit fornito (navigazione / tab-bar / modali / etc), ma non vedo perché non dovrebbe funzionare. Sotto il cofano, tutto è una vista, anche se io notare che UIKit ha viste speciali per i controller di vista che non hanno alcun dubbio un qualche tipo di trattamento speciale da parte del sistema (UIViewController ha una vista involucro, UINavigationController ha un UINavigationTransitionView o qualcosa del genere .. .).

Mi piacerebbe consiglio di non preoccuparsi troppo di "best practice" - solo qualcosa di codice che fa quello che si vuole. Un paio di opzioni:

  • Stick logica in classi di visualizzazione (ewwww!). Una delle nostre applicazioni fa questo in modo che possa gestire la rotazione in modo personalizzato (vista scivolare in / out invece di ruotare). Avremmo dovuto probabilmente implementato la nostra logica di controllo proprio punto di vista, invece.
  • Rompere il modello in componenti che corrispondono alle viste. Fare ogni vista sa come caricare la sua componente e ricorsivamente caricare sottocomponenti. Poi il controller della vista deve solo preoccuparsi di roba "big picture".

noti inoltre che è possibile caricare più pennini nello stesso controller della vista da esempio collegandolo a una presa chiamato editView.The grande differenza è che non è fatto automaticamente - [UIViewController loadview] quindi è necessario fare qualcosa di simile

-(EditView*)editView {
  if (!editView) {
    // Loads EditView into the outlet editView
    [NSBundle loadNibNamed:@"EditView" owner:self];
  }
  return editView;
}

Avrete anche bisogno di preoccuparsi di inserirlo nella gerarchia della vista, scarico su - (void) viewDidUnload (iPhone OS 3.0 +), la sua creazione in - (void) viewDidLoad nel caso ci fosse un avvertimento di memoria durante modalità di modifica, ecc ...

Non è facile, ma interfaccia utente non è.

Hai bisogno di una vista master-detail realizzato con uno split-view / popover-view e controllato con un UISplitViewController.

La vista master è l'elenco dei documenti e la visualizzazione dei dettagli è la vista di modifica. Ognuno ha il proprio controllore. I due controllori stessi sono gestiti dal UISplitViewController.

Se non si utilizza il controller SplitView sarà solo finire per mano di codifica qualcosa che funziona molto simile. Questo è davvero l'unico modo per fare quello che vuoi facilmente nel API ed è il layout che gli utenti iPad si aspettano.

Vedere Creazione di uno Split View Interface nella guida di programmazione iPad per i dettagli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top