アプリのナビゲーションに問題があります。私はxamarin.formsを使用して、ナビゲーションスタックをクリーンアップできます。ポップとプッシュを使用しません。完全なナビゲーションスタックを表示できますか?
Xamarin.Formsの最新バージョンでは、次を使用してナビゲーションスタックを確認できます
Navigation.NavigationStack
したがって、あなたは
var existingPages = Navigation.NavigationStack.ToList();
foreach(var page in existingPages)
{
Navigation.RemovePage(page);
}
このコードは、ナビゲーションページまたはINavigationを実装する何かの背後にあるコードに挿入する必要があります。
これは、スタックを空にして指定したページに移動するために作成した関数です。 (ユースケースは、使用中にアプリが非アクティブ化され、ユーザーを追い出す必要がある場合でした)
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();
}
あなたはこれを試すことができます...
public void ResetNavigationStack()
{
if (_navigation != null && _navigation.NavigationStack.Count() > 0)
{
var existingPages = _navigation.NavigationStack.ToList();
foreach (var page in existingPages)
{
_navigation.RemovePage(page);
}
}
}
そしてブーム!!!そのナビゲーションスタックはクリアされたブラザです!
または、モーダルスタックをリセットする場合
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;
}
そしてブーム!それらのモーダルはなくなった!