我的应用程序便携式类中有4个ContentPage 网页A 网页B PageC 分页
第a页到第b页附带
Navigation.InsertPageBefore(new PageB(),this);
await Navigation.PopAsync();
从页面b到页面c从代码重定向
Navigation.InsertPageBefore(new PageC(),this);
await Navigation.PopAsync();
从页面C到页面D重定向代码
Navigation.InsertPageBefore(new PageD(),this);
await Navigation.PopAsync();
现在我想将用户从PageD重定向到PageB
Navigation.InsertPageBefore(new PageB(),this);
await Navigation.PopAsync();
我可以非常顺利地从PageA到PageD。但是试图从PageD返回到PageB我得到了一个异常
错误 之前必须位于当前上下文的推送堆栈中
堆栈跟踪
在Xamarin.Forms.Internals.NavigationProxy.OnInsertPageBefore (Xamarin.Forms.Page页面,Xamarin.Forms.Page之前)[0x00020] in D:\ agent_work \ 1 \ s \ Xamarin.Forms.Core \ NavigationProxy.cs:150 at Xamarin.Forms.Internals.NavigationProxy.InsertPageBefore (Xamarin.Forms.Page页面,Xamarin.Forms.Page之前)[0x00000] in D:\ agent_work \ 1 \ s \ Xamarin.Forms.Core \ NavigationProxy.cs:59 at Test.PageD + d__9.MoveNext()[0x0007a] in E:\项目\ xamrine \源\ TestiOS \ PictureAfterSignature.xaml.cs:433
如何解决此问题?
答案 0 :(得分:0)
我建议你这样导航:
Navigation.PushAsync(new PageA());
// In Page A
Navigation.PushAsync(new PageB());
Navigation.RemovePage(this);
// In Page B
Navigation.PushAsync(new PageC());
// In Page C
Navigation.PushAsync(new PageD());
Navigation.RemovePage(this);
现在,如果你看到,PageB和PageD只是导航堆栈中的页面。
在PageD中,当您想要导航到B时,只需致电:
Navigation.PopAsync();
// PopAsync - 删除堆栈中的最新页面。
希望这会有所帮助!!