我正在使用Xamarin Form PCL创建一个iOS应用程序.Page的流程为
Login page
- > Page Main
- > Page OrderList
- > Page OrderItem
- > Page Signature
- > Page Camera
。问题是从主页面到相机页面我可以没有任何问题但是当我尝试从Camera页面返回到OrderList页面时,我收到异常before must be in the pushed stack of the current context
。我不知道出了什么问题。因为相同的代码在Android中运行完美但在iOS中没有运行。
Navigation.InsertPageBefore(new OrderList(), this);
await Navigation.PopAsync();
完成例外
Message: before must be in the pushed stack of the current context
InnerMessage:
StackTrace: at Xamarin.Forms.Internals.NavigationProxy.OnInsertPageBefore (Xamarin.Forms.Page page, Xamarin.Forms.Page before) [0x00020] in D:\agent\_work\1\s\Xamarin.Forms.Core\NavigationProxy.cs:150
at Xamarin.Forms.Internals.NavigationProxy.InsertPageBefore (Xamarin.Forms.Page page, Xamarin.Forms.Page before) [0x00000] in D:\agent\_work\1\s\Xamarin.Forms.Core\NavigationProxy.cs:59
at AT.PictureAfterSignature+<Process>d__9.MoveNext () [0x000a2] in E:\Projects\xamrine\Source\ATiOS\AT\AT\PictureAfterSignature.xaml.cs:422
Source: Xamarin.Forms.Core
希望有人知道如何解决这个问题。
答案 0 :(得分:0)
如果出现此错误,可能是因为死页正在调用该函数。例如,如果您通过
在主页中使用订阅事件处理页面转换MessagingCenter.Subscribe<Application>();
当您通过 PopAsync() “离开”主页面时(例如,转到登录页面,登录后将创建一个新的主页面),您需要先取消订阅任何事件,否则下次调用时导航事件,死页仍在侦听,并会在已删除时再次尝试将其删除。我希望这是有道理的。
您也可以检查 Navigation.NavigationStack
是否为空,如果是则返回,但这并不能解决根本问题。