2015-02-12 42 views
5

Tôi gặp sự cố cho Điều hướng trong ứng dụng của mình. Tôi sử dụng xamarin.forms làm thế nào có thể làm sạch ngăn xếp chuyển hướng của tôi. Không sử dụng Pop và push. Tôi có thể xem ngăn xếp điều hướng đầy đủ của mình không?Làm cách nào để xóa ngăn Điều hướng?

Trả lời

23

Trong phiên bản mới nhất của Xamarin.Forms bạn có thể nhìn thấy đống điều hướng của bạn sử dụng

Navigation.NavigationStack 

do đó bạn có thể sử dụng một

var existingPages = Navigation.NavigationStack.ToList(); 
foreach(var page in existingPages) 
{ 
    Navigation.RemovePage(page); 
} 

Mã này sẽ phải đi vào mã của bạn đằng sau của một Trang điều hướng hoặc thứ gì đó thực hiện INavigation.

Thông tin thêm Xamarin.Forms.INavigation Members

+0

Tuyệt vời, tôi sử dụng phiên bản cũ và không có NavigationStack – Ibrahim

+0

@ibrahim bạn có thể nâng cấp phiên bản của mình qua nuget. đi đến tài liệu tham khảo trong dự án của bạn và nhấp chuột phải và nhấp vào quản lý gói nuget. Sau đó chọn Cập nhật và cài đặt bản cập nhật Xamarin.Forms – user1

+0

Có, tôi biết, tôi vừa viết lý do cho câu hỏi. Bởi vì với phiên bản mới của câu hỏi này là ngu ngốc. cảm ơn bạn – Ibrahim

1

Đây là một chức năng tôi đã thực hiện để trống ngăn xếp và điều hướng đến một trang nào đó. (Các trường hợp sử dụng là ứng dụng đã được de-kích hoạt quá trình sử dụng và tôi cần phải kick người dùng ra)

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

Hoạt động hoàn hảo –

0

Bạn có thể thử này ...

public void ResetNavigationStack() 
    { 
     if (_navigation != null && _navigation.NavigationStack.Count() > 0) 
     { 
      var existingPages = _navigation.NavigationStack.ToList(); 
      foreach (var page in existingPages) 
      { 
       _navigation.RemovePage(page); 
      } 
     } 
    } 

và BOOOM !!! mà nav stack được xóa brotha!

Hoặc nếu bạn muốn thiết lập lại ngăn xếp modal

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; 
    } 

Và BOOOM! những mô hình đó đã biến mất!

Các vấn đề liên quan