Bene, per alcuni di voi questa domanda può sembrare ridicola, ma sto discutendo con i miei compagni di squadra sulla progettazione di un'app per iOS e ho bisogno della vostra opinione al riguardo.Dovremmo evitare di spingere il loop continuo tra due viste?
Il vecchio design che non sono d'accordo è come seguendo
- Abbiamo ViewControllerA che contiene Button "Scheda B". Il pulsante ha un segue PUSH per andare a B.
- Abbiamo ViewControllerB che contiene Button "andare a un" .Il pulsante ha una segue PUSH per andare A.
- Dobbiamo viaggiare tra il 2 ViewController un sacco.
Come si può vedere, c'è un ciclo continuo tra ViewController A e B e penso che non dovremmo mai lasciare che ciò accada. Preferirei andare da B a A con il pulsante "Indietro" nella barra di navigazione.
Quanto è grave il ciclo PUSH segue in progettazione? È accettabile in alcuni casi? Dove posso vedere il buon design consigliato da Apple (se ce ne sono?)
EDIT: soluzione provo "pop prima di spinta" da nfarshchi ma non si work.This è come ho fatto: 1) Non riesco a creare sequenze da VC A a VC B e passa da VC B a VC A contemporaneamente. Sembra che lo storyboard gli impedisca di accadere 2) Così creo un seguito il cui identificatore è "gotoB" dal pulsante "Vai a B" in VC A a VC B e uno segue il cui identificatore è "gotoA" dal pulsante "Vai a A "in VC B a VC A.
Così Storyboard sarebbe simile a questo:
VC X --- --- Spingere> VC Un < ---- Spingere ----> VC B (Il motivo per cui ho bisogno di ViewController X è spiegato più avanti) 3) In VC AI avere questo:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"Prepage for segue go to B") ;
if ([[segue identifier] isEqualToString:@"gotoB"]) {
[self.navigationController popViewControllerAnimated:NO];
}
}
ho bisogno VC X perché non posso pop un ViewController da Stack se c'è un solo ViewController in là.
Ora sembra giusto, ma quando ho fatto clic su "Vai a B", è andato invece a VC X. Era chiaro che il precedente popViewControllerAnimated: ha inserito VC A, e questo è tutto, il passaggio a VC B non è stato più licenziato. Il risultato è stato che il VC B non è stato inserito nello stack come previsto.
Così penso che sia impraticabile per implementare la soluzione di nfarshchi
Grazie. Ma non credo che la tua soluzione su "pop before push" funzionerà – grandagile
No man, non volevo dire che tu pop prima di spingere, stavo dicendo usando 'UINavigationController', solo una volta premi il tuo' UIViewController' e anche tu puoi avere un semplice pulsante indietro. e non c'è bisogno di farlo di nuovo. 'UINavigationController' lo farà per te. – nfarshchi
Considerate che avete 'ViewControllerA' e' ViewControllerB'. su 'A' puoi avere un pulsante e [self.navigationController pushViewController: viewControllerB animated: YES]; – nfarshchi