【问题标题】:page redirect is not working for ios页面重定向不适用于 ios
【发布时间】:2018-04-02 16:35:09
【问题描述】:

我的应用程序可移植类中有 4 个 ContentPage 页面A 页面B 页面C 第D页

页面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 我得到了一个异常

错误 before 必须在当前上下文的推送堆栈中

堆栈跟踪

在 Xamarin.Forms.Internals.NavigationProxy.OnInsertPageBefore (Xamarin.Forms.Page 页面,Xamarin.Forms.Page 之前)[0x00020] in D:\agent_work\1\s\Xamarin.Forms.Core\NavigationProxy.cs:150 在 Xamarin.Forms.Internals.NavigationProxy.InsertPageBefore (Xamarin.Forms.Page 页面,Xamarin.Forms.Page 之前)[0x00000] in D:\agent_work\1\s\Xamarin.Forms.Core\NavigationProxy.cs:59 在 Test.PageD+d__9.MoveNext() [0x0007a] in E:\Projects\xamrine\Source\TestiOS\PictureAfterSignature.xaml.cs:433

我该如何解决这个问题?

【问题讨论】:

    标签: c# xamarin.forms xamarin.ios


    【解决方案1】:

    我建议你这样导航:

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

    希望这会有所帮助!

    【讨论】:

    • 在调用“await Navigation.PopAsync();”之前,请在 iOS 中调试并查看 Navigation 堆栈中有什么值。您将了解堆栈中有哪些页面,并且可以轻松处理它。
    • P Shetty 我已经在调试模式下检查了导航堆栈,它为空
    • 你能尝试一下我的代码,看看它是否能给你预期的行为吗?
    • 你检查了哪一行 NavigationStack ? @A.Goutam
    • @ColeXia-MSFT on PageD
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多