导航问题:iOS上不支持全局PopToRootAsync,请使用NavigationPage

时间:2017-02-26 19:08:56

标签: c# ios xamarin.forms

在App课上我有这个:

MainPage = new NavigationPage(new MainPage());

在MainPage OnAppearing中:

protected async override void OnAppearing ()
    {
        base.OnAppearing ();

        if (TempUserInfo.IsNewUser ())
            await this.Navigation.PushModalAsync ( new SignUpPage ());
    }

在用户输入所有信息后,在SignUpPage上,我使用:

await this.Navigation.PushModalAsync (new VerificationCodePage());

最后,在我检查VerificationPage上的验证码后,我使用了这个:

await this.Navigation.PopToRootAsync ();

现在,我收到了这个错误:

iOS上不支持全局PopToRootAsync,请使用NavigationPage。

我想要达到的目标与上面的导航设置完全相同。

3 个答案:

答案 0 :(得分:1)

而不是做

await this.Navigation.PopToRootAsync ();

您可以重置主页:

MainPage = new NavigationPage(new MainPage());

答案 1 :(得分:1)

我辞去了Jason建议的导航,在VerificationPage中,我使用了这个:

MainPage = new NavigationPage(new MainPage());

感谢大家的帮助。

答案 2 :(得分:0)

这个解决方案在我预期的Android上运行。将它们放在App.xaml.cs

 public static MyMasterDetail RootPage()
{
    return (MyMasterDetail)Current.MainPage;
}

public static void NavigateToHomePage()
{
    try
    {


        MainPage homePage = new MainPage();
        MyMasterDetail masterDetailRootPage = (MyMasterDetail)Application.Current.MainPage;
        masterDetailRootPage.Detail = new NavigationPage(homePage);
        masterDetailRootPage.IsPresented = false;

        Current.MainPage = masterDetailRootPage;
    }
    catch (Exception ex)
    {
        Debug.WriteLine("!!! NavigateToHomePage() Exception !!!");
        Debug.WriteLine("Exception Description: " + ex);
    }
}

然后你可以从任何地方打电话回家

   App.NavigateToHomePage();

或显示masterdetail左侧菜单

   App.RootPage().IsPresented = true;