.net - Xamarin 表单 - 导航到另一个页面
问题描述
我正在使用适用于 Android 和 IOs 应用程序的 Xamarin Forms。
我有两个页面,登录页面和主页。我要实现的逻辑是:检查用户是否登录,如果没有打开“登录”页面,如果是,则转到“主”页面。
我试图使用 NavigationPage 和 Navigation.PushAsync 方法来实现这一点。但是方法在没有 NavigationPage 的情况下不起作用,并且 NavigatetionPage 在顶部呈现额外的导航栏。
现在我正在使用:
应用程序.xaml.cs
public App()
{
InitializeComponent();
if (!isUserLoggedIn)
{
MainPage = new LoginPage();
}
else
{
MainPage = new MainPage();
}
}
登录页面.xaml.cs
//When user authenticated
App.Current.MainPage = new MainPage();
这段代码运行良好,但我不确定这是否是好的和正确的解决方案。
有没有更好的方法来实现相同的逻辑?
解决方案
您只需要在 LoginPage 和 MainPage 中隐藏 Navigationbar。
public App()
{
InitializeComponent();
if (!isUserLoggedIn)
{
MainPage = new NavigationPage(new LoginPage());
}
else
{
MainPage = new NavigationPage(MainPage());
}
}
登录页面.xaml.cs:
public LoginPage()
{
InitializeComponent();
NavigationPage.SetHasNavigationBar(this, false);
}
//When user authenticated
App.Current.MainPage = new NavigationPage(MainPage());
MainPage.xaml.cs:
public MainPage()
{
InitializeComponent();
NavigationPage.SetHasNavigationBar(this, false);
}
推荐阅读
- r - 用 gt 中的条件信息为单元格着色
- php - 如何使用 phpunit 对 if 语句执行断言
- node.js - 我需要在Angular的每个pdf页面中添加一些设计的页脚
- python - 用于 pySpark 项目的 Azure DevOps CI 管道
- c++ - 在 C++ 中的 3d 数组堆上分配
- android - 如何在android compose中以黑白显示图像
- ios - Not able to create IOS build from Xcode using Flutter code?
- docker - docker run 不能使用 entrypoint.sh 和 exec 形式的命令
- c++ - 使用 C++ 从“-v7.3”mat 文件中读取数据的问题
- ios - 为什么NSObject的实例方法可以作为类方法调用