微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 清除Xamarin表单模态堆栈

我有一个Xamarin.Forms应用程序,它使用NavigationPage进行正常的屏幕导航.从其中一个屏幕(Stay Detail),我需要显示一系列4个顺序模态页面(如向导),它们收集数据以完成与Stay Detail相关的过程.进程中的每个页面都有一个“取消”按钮,允许用户取消向导并返回到保持详细信息.这是一般流程:

modal1 -> modal2 -> modal3 -> modal4
           /                                    \
 StayDetail                                      StayDetail

从StayDetail执行PushModalAsync以启动modal1,然后在各个模态页面之间执行PushModalAsync / PopModalAsync很容易.但是,我无法想出从第二个模态或更高版本退出模态堆栈的干净方法.最好的方法是什么?

解决方法

每次用户导航到下一个模态时,您不能只执行以下操作吗?

await Navigation.PushModalAsync(new modal2()); //Send user to new modal2 pages
await Navigation.PopModalAsync(); //Pop modal1 page

然后当他们点击取消按钮时,你会再做一次PopModalAsync()并返回到StayDetail页面,因为你已经弹出了下面的所有模态.

如果他们在获得modal2之后需要一种方法回到modal1,你可以简单地传递modal1需要的任何数据,同时创建一个新的页面

Modal1Data modalData = new Modal1Data();

await Navigation.PushModalAsync(new modal1(modalData)); //Push old modal with prevIoUsly entered data
await Navigation.PopModalAsync(); //Pop modal2 page

您甚至可以在导航回modal1之前保存已从modal2输入的数据,这样当用户返回到modal2时,他们的所有信息仍会显示在屏幕上.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐