我有一个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] 举报,一经查实,本站将立刻删除。