页面重定向不适用于ios

时间:2018-04-02 08:07:22

标签: c# xamarin.forms xamarin.ios

我的应用程序便携式类中有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

如何解决此问题?

1 个答案:

答案 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 - 删除堆栈中的最新页面。

希望这会有所帮助!!