Uygulamamda Navigasyon için bir sorunum var. Ben xamarin.forms kullanıyorum. Pop kullanmayın ve itin. Tam gezinme kümemi görebilir miyim?Gezinme yığınını nasıl temizlerim?
Xamarin.Forms en son sürümünde
5
A
cevap
23
Eğer Bu kod arkasında sizin koduna gitmek zorunda kalacak bu nedenle bir
var existingPages = Navigation.NavigationStack.ToList();
foreach(var page in existingPages)
{
Navigation.RemovePage(page);
}
kullanabilirsiniz
Navigation.NavigationStack
kullanarak navigasyon yığını görebilirsiniz Navigasyon Sayfası veya INavigation'ı uygulayan bir şey.
fazla bilgi Xamarin.Forms.INavigation Members
1
Bu benim yığını boşaltmak ve belirli bir sayfaya gitmek için yapılmış bir fonksiyondur.
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();
}
+0
Mükemmel çalışır –
0
Bu deneyebilirsiniz ...
public void ResetNavigationStack()
{
if (_navigation != null && _navigation.NavigationStack.Count() > 0)
{
var existingPages = _navigation.NavigationStack.ToList();
foreach (var page in existingPages)
{
_navigation.RemovePage(page);
}
}
}
ve Booom (kullanım böyleydi uygulama kullanımı esnasında de-aktive edildi ve ben dışarı kullanıcı tekme gerekir) !!! Bu nav yığını brotha temizlendi!
Yoksa istiyorum modal yığını
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;
}
Ve Booom reset eğer! Bu modalar gitti!
Harika, eski sürümü kullanıyorum ve NavigationStack – Ibrahim
@ibrahim'i kullanamıyorum, versiyonunuzu nuget ile yükseltebilirsiniz. projenizdeki referanslara gidin ve nuget paketlerini sağ tıklayın ve tıklayın. Daha sonra Güncelleştirmeler'i seçin ve Xamarin.Forms güncelleştirmesini yükleyin – user1
Evet Biliyorum, sorunun nedenini yazdım. Çünkü bu sorunun yeni versiyonu aptalca. – Ibrahim