У меня проблема для навигации в моем приложении. Я использую xamarin.forms, как очистить мой стек навигации. Не использовать Pop и push. Могу ли я увидеть свой полный навигационный стек?Как очистить стек навигации?
ответ
В последней версии Xamarin.Forms вы можете увидеть стек навигации с помощью
Navigation.NavigationStack
поэтому вы можете использовать
var existingPages = Navigation.NavigationStack.ToList();
foreach(var page in existingPages)
{
Navigation.RemovePage(page);
}
Этот код должен идти в код позади Страница навигации или что-то, что реализует «Инавигация».
Более подробная информация Xamarin.Forms.INavigation Members
Это функция, которую я сделал, чтобы очистить стек и перейти к указанной странице. (Прецедент был приложение было деактивированы во время использования, и мне нужно пнуть пользователя из)
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);
}
}
}
и BOOOM !!! этот навигационный стек очищен brotha!
Или, если вы хотите сбросить модальный стек
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;
}
И BOOOM! эти модалы исчезли!
- 1. Очистить задний стек при открытии ящика навигации
- 2. Как вернуться в стек навигации?
- 3. Как создать глобальный стек навигации?
- 4. Очистить JavaScript стек вызовов
- 5. Очистить стек деятельности OnBackpressed()
- 6. NativeScriptException: поврежденный стек навигации
- 7. как очистить EditText навигации ящика
- 8. как очистить стек фрагмента и стек активности нажатием кнопки
- 9. Очистить стек активности в android
- 10. Удаление ViewController в навигации Стек
- 11. Как очистить стек и закрыть приложение
- 12. Android: Как очистить стек активности от виджета
- 13. Как очистить стек от удаленных страниц?
- 14. Как очистить стек Android от действий?
- 15. Как я могу полностью очистить стек?
- 16. Как очистить мой стек состояния lua?
- 17. Как правильно очистить стек форм в VB6
- 18. Как очистить стек в сопроцессоре masm32 (FPU)?
- 19. Как очистить задний стек при целевой загрузке
- 20. Recreate ViewController в навигации стек
- 21. Как очистить историю навигации в WPF
- 22. Очистить весь стек при нажатии на уведомление
- 23. Очистить стек деятельности, кроме первой активности
- 24. Очистить стек фонового фрагмента Android, не появляясь?
- 25. Очистить стек навигационной панели при наступлении активности
- 26. Pop to first ViewController в стек навигации
- 27. Очистить стек стека при возврате (C)
- 28. Очистить стек активности Android, начинающий новую активность
- 29. Манипулировать стек контроллера навигации на другом UITabbar
- 30. Программно определяя порядок/стек нового контроллера навигации?
Отлично, я использую старую версию и не имею NavigationStack – Ibrahim
@ibrahim, вы можете обновить свою версию через nuget. перейдите к ссылкам в своем проекте и щелкните правой кнопкой мыши и выберите управление пакетами nuget. Затем выберите «Обновления» и установите обновление Xamarin.Forms – user1
Да, я знаю, я только что написал причину вопроса. Потому что с новой версией этого вопроса глупо. спасибо – Ibrahim