Ho problemi con la navigazione nella mia app. Uso xamarin.forms come posso pulire il mio stack di navigazione. Non usare Pop e push. Posso vedere il mio stack di navigazione completo?Come si cancella lo stack di navigazione?
risposta
Nella versione più recente di Xamarin.Forms potete vedere il vostro stack di spostamento utilizzando
Navigation.NavigationStack
quindi è possibile utilizzare un
var existingPages = Navigation.NavigationStack.ToList();
foreach(var page in existingPages)
{
Navigation.RemovePage(page);
}
Questo codice avrebbe dovuto andare nel codice dietro di un Pagina di navigazione o qualcosa che implementa INavigation.
Ulteriori informazioni Xamarin.Forms.INavigation Members
o funzione feci per svuotare lo stack e passare a una pagina specificata. (Il caso d'uso è stata l'applicazione è stata disattivata durante l'uso e ho bisogno di cacciare l'utente out)
public async Task PopAllTo(ViewModel vm)
{
if (vm == null) return;
Page page = PreparePage(vm); //replace 'page' with the page you want to reset to
if (page == null) return;
_navigation.InsertPageBefore(page, _navigation.NavigationStack.First());
await _navigation.PopToRootAsync();
}
Funziona perfettamente –
Si può provare questo ...
public void ResetNavigationStack()
{
if (_navigation != null && _navigation.NavigationStack.Count() > 0)
{
var existingPages = _navigation.NavigationStack.ToList();
foreach (var page in existingPages)
{
_navigation.RemovePage(page);
}
}
}
e BOOOM !!! quella pila nav è cancellata brotha!
Oppure, se si vuole ripristinare lo stack modale
public async Task<Page> PopAllModals()
{
Page root = null;
if (_navigation.ModalStack.Count() == 0)
return null;
for (var i = 0; i <= _navigation.ModalStack.Count(); i++)
{
root = await _navigation.PopModalAsync(false);
}
return root;
}
E BOOOM! quelle modali sono sparite!
- 1. Come si cancella lo schermo in un terminale usando Perl?
- 2. Lo stack si estende Vector
- 3. Cancella Indietro Pila di navigazione Windows 10
- 4. Come si cancella lo stato attivo in javascript?
- 5. GCC - Come riallineare lo stack?
- 6. Come si cancella la cronologia di navigazione in Silverlight/Windows Phone 7?
- 7. Cancella stack back di frammenti Android senza scoppiare?
- 8. Come posso mostrare una barra delle linguette quando si spinge un UIViewController nello stack di navigazione
- 9. Navigazione nello stack di chiamate Java in Eclipse
- 10. Manipolare lo stack monade
- 11. ios7 nuovo pan gesture per tornare indietro nello stack di navigazione non cancella la selezione della tabella table
- 12. Come sovradimensionare lo stack senza spingere nuovi frame dello stack?
- 13. Come posso creare uno stack di navigazione globale?
- 14. PInvoke sbilancia lo stack
- 15. Pagine pop off stack di navigazione nell'app di Windows 8
- 16. Tentativo di distruggere lo stack
- 17. UICollectionView calling scrollViewDidScroll: quando prelevato dallo stack di navigazione
- 18. Cancella back stack quando l'oggetto dell'applicazione viene ucciso dal sistema
- 19. Cancella attività Stack e inizia nuova attività in Android
- 20. Salvare lo stack?
- 21. Problemi dello stack di navigazione UINavigationController in modalità orizzontale
- 22. Mentre si sta verificando una transizione o una presentazione esistente; lo stack di navigazione non verrà aggiornato
- 23. Come si cancella lo schermo tmux mentre si chiudono i registri?
- 24. Come intercettare lo stack overflow con pthread?
- 25. Qual è lo stack USB?
- 26. Come si cancella la memoria in Javascript?
- 27. Come si cancella la console in MATLAB?
- 28. Che cos'è lo "stack thrash"?
- 29. Verifica se esiste un ViewController su Stack di navigazione
- 30. In Django, come si cancella una sessionkey?
Grande, io uso la vecchia versione e non ho NavigationStack – Ibrahim
@ibrahim è possibile aggiornare la versione tramite nuget. vai ai riferimenti nel tuo progetto e fai clic con il pulsante destro del mouse e fai clic su Gestisci pacchetti nuget. Quindi selezionare Aggiornamenti e installare l'aggiornamento Xamarin.Form – user1
Sì, lo so, ho appena scritto il motivo della domanda. Perché con la nuova versione di questa domanda è stupido. grazie – Ibrahim