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!
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