当我的应用程序首次启动时,我会显示一个登录页面.在登录按钮中,如果他们能够登录我想删除登录页面并导航到选项卡页面.在这个标签页中,我将有一个设置页面,允许我在需要时返回登录页面.现在我有以下但它不起作用.显示主页,但登录页面的后退箭头显示,我不希望这样.
public class LoginPage: ContentPage
{
public LoginPage() { // create controls here }
public btnLogin_Clicked(object sender, EventArgs e){
Navigation.PopAsync(); // remove this page (doesn't work)
Navigation.PushAsync(new HomePage());
}
}
public class App : Application
{
public App()
{
MainPage = new NavigationPage(new LoginPage());
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
Xamarin.Forms 1.3添加了添加和删除页面功能的功能,如您所建议的那样重置导航堆栈的根目录.您的代码表明您使用的是至少1.3版.但是,直接调用PopAsync()并不是您想要使用的方法,因为如果它是堆栈中唯一的页面,它将不会弹出页面.而是首先使用INavigation接口的InsertPageBefore(newPage,pageToPutBefore)方法,然后在堆栈末尾弹出登录页面.
你可以尝试类似这样的代码:
public async void btnLogin_Clicked(object sender, EventArgs e)
{
// Do some login logic and if successful ...
Navigation.InsertPageBefore(new HomePage(), this);
await Navigation.PopAsync().ConfigureAwait(false);
}
Run Code Online (Sandbox Code Playgroud)
Xamarin.Forms 1.3中有几种新方法可以大大提高导航功能.上述问题的另一个可能的解决方案是首先将HomePage添加到堆栈的末尾,然后使用新的RemovePage方法从堆栈的开头删除登录页面,使HomePage成为唯一的页面.有一件事你要小心,如果你使用像PushAsync这样的异步方法添加新页面,你需要等待调用以确保在删除旧页面之前将新页面添加到堆栈中.
| 归档时间: |
|
| 查看次数: |
7070 次 |
| 最近记录: |