gpt4 book ai didi

Xamarin.Forms 删除页面

转载 作者:行者123 更新时间:2023-12-02 14:11:53 25 4
gpt4 key购买 nike

当我的应用程序首次启动时,我让它显示一个登录页面。在登录按钮中,如果他们能够登录,我想删除登录页面并导航到选项卡式页面。在此选项卡页面中,我将有一个设置页面,允许我在需要时返回登录页面。现在我有以下内容,但它不起作用。显示了主页,但显示了登录页面的后退箭头,但我不希望出现这种情况。

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());
}
}

最佳答案

Xamarin.Forms 1.3 添加了添加和删除页面的功能,按照您的建议重置导航堆栈的根。您的代码表明您使用的版本至少为 1.3。但是,立即调用 PopAsync() 并不是您想要使用的方法,因为如果该页面是堆栈中的唯一页面,则它不会弹出该页面。而是首先使用 INavigation 接口(interface)的 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);
}

Xamarin.Forms 1.3 中有多种新方法可以显着提高导航功能。上述问题的另一种可能的解决方案是首先将 HomePage 添加到堆栈的末尾,然后使用新的 RemovePage 方法从堆栈的开头删除登录页面,使 HomePage 成为唯一剩下的页面。您需要注意的一件事是,如果您使用 PushAsync 等异步方法添加新页面,则需要等待调用以确保在删除旧页面之前将新页面添加到堆栈中。

关于Xamarin.Forms 删除页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29042792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com