我很努力地做某事,但我无法解决这个问题。我有三个页面,一个是 MainPage、LoginUpPage 和 SignUpPage,LoginUpPage 里面有一个导航到 SignUpPage 的按钮,我想要做的是当我完成我的逻辑导航到另一个页面 CreatedPage,其中包含一个带有消息的标签 -成功,然后在 2 秒后返回到登录页面,问题是如果我从设备上按下后退按钮,它会返回到带有消息标签的最后一页,我不想要那样。我有一个带有 BackButton 的工具栏,可以返回到我导航的每个页面。到目前为止,我有这个:
登录页面到注册页面:
Navigation.PushAsync(new SignupPage());
Run Code Online (Sandbox Code Playgroud)
SignUpPage 到 CreatedPage :
await Navigation.PushModalAsync(new Created());
Run Code Online (Sandbox Code Playgroud)
在我的构造函数中的 CreatedPage 内部,此方法:
public async void Redirect()
{
await Task.Delay(TimeSpan.FromSeconds(2));
await Navigation.PushAsync(new LoginPage());
}
Run Code Online (Sandbox Code Playgroud)
我通过这个问题知道基本上有三种方法可以导航到另一个页面:
Navigation.PushAsync(new OtherPage()); // to show OtherPage and be able to go back
Run Code Online (Sandbox Code Playgroud)
Navigation.PushAsyncModal(new AnotherPage());// to show AnotherPage and not have a Back button
Navigation.PopAsync();// to go back one step on the navigation stack
在同一个问题中有一个示例如何从堆栈中删除页面,但它不起作用。
item.Tapped += async (sender, e) => {
await Navigation.PushAsync (new SecondPage ());
Navigation.RemovePage(this);
Run Code Online (Sandbox Code Playgroud)
};
在这种情况下,您需要设置一个根页面:
//Master Detail Page
public class RootPage : MasterDetailPage
{
MenuPage menuPage;
public RootPage()
{
menuPage = new MenuPage(this);
Master = menuPage;
Detail = new NavigationPage(new HomePage());
}
}
Run Code Online (Sandbox Code Playgroud)
//Set the Root Page
public class App : Application
{
public App()
{
InitializeComponent ();
if(NewUser || NotLoggedIn)
{
MainPage = new LoginPage();
}
else
{
MainPage = new RootPage();
}
}
}
public class LoginPage : ContentPage
{
private void SignupButtonOnClicked(object sender, EventArgs eventArgs)
{
Navigation.PushAsync(new SignupPage());
}
}
public class SignupPage : ContentPage
{
private void CreatedButtonOnClicked(object sender, EventArgs eventArgs)
{
Navigation.PushModalAsync(new CreatedPage());
}
}
// Set the Login Page
public class CreatedPage : ContentPage
{
private void CreatedButtonOnClicked(object sender, EventArgs eventArgs)
{
Navigation.PushModalAsync(new LoginPage());
//Special Handel for Android Back button
if (Device.OS == TargetPlatform.Android)
Application.Current.MainPage = new LoginPage();
}
}
Run Code Online (Sandbox Code Playgroud)
这样,后退按钮将不会返回到上一页,因为它将重置导航堆栈到根页面,即您的登录页面。
| 归档时间: |
|
| 查看次数: |
15764 次 |
| 最近记录: |