在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。
我想要达到的目标与上面的导航设置完全相同。
答案 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;