xamarin.forms - Xamarin.Forms.Application.Current.MainPage 为空
问题描述
我有一个不寻常的案例场景,我将应用程序从 iOS 迁移到 Forms。
我的设置是 -
iOS 项目加载签名 UIViewController 和处理登录例程。MainPage 为空。
在登录例程完成后,我将 XF 视图加载为 UIViewController 并将其添加到导航堆栈
var formsController = formsPage.CreateViewController();
CoreApplication.Instance.FormsController = formsController;
var CurrentNavigationController = UIApplication.SharedApplication.KeyWindow.RootViewController;
var viewControllersStack = CurrentNavigationController.ChildViewControllers;
viewControllersStack[viewControllersStack.Length - 1].NavigationController.PushViewController(CoreApplication.Instance.FormsController, true);
那是当 MainPage 具有作为 Navigation 的值时,将其设置为导航页面。
- 我转到后台。
protected override void OnSleep()
{
if (Application.Current.MainPage != null)
{
Console.WriteLine("!!!! --- " + Application.Current.MainPage.GetType().Name);
}
}
我得到 MainPage 的名称 - 所以值不为空。
- 我回到前台 => OnResume() 捕获 MainPage 为空。
但我又回到了我的 XF 视图。导航在页面之间工作,一切似乎都很好。
现在唯一的问题是 MainPage 现在为空 - 一些库(如 Rg.Plugins.Popup)无法正常工作,因为它们引用了 MainPage 并且我正在崩溃。
关于如何保持 MainPage 引用的任何帮助/想法?
谢谢你!
附言
如果我调用 NavigationService.NavigateAsync(MyPage); 我做了一些调查 从 App.xaml.cs 或 do=> MainPage = new MyPage(); 然后 MainPage 的实例在所有应用程序生命周期中保持活动状态。
解决方案
从评论到原始帖子可以看出 - 问题的解决方案是在 XF 成为应用启动时的第一响应者时移动应用逻辑。然后我照常管理导航,并在需要加载 UIViecontrollers 时 - 让 UIApplication.SharedApplication.KeyWindow 到 Present ViewController。
推荐阅读
- powershell - 多种颜色的读取主机
- mysql - 如何在数据库中存储 5MB 文件预览
- parallel-processing - openmpi 运行时错误:Hello World 在主机上运行
- python - 在 Google Colab 上运行 PyOpenPose
- reactjs - 试图设置 react-highcharts 的状态,但它不起作用?
- c++ - 设置标签 QDockWidget 选项卡的颜色
- r - R - 使用 biomaRt/getBM 生成 55,000 多个基因的列表,而不是我在“值”下作为数据框输入的约 15,000 个基因
- ruby-on-rails - Active Record Relation Method 聚合关联的 has_many
- c++ - 检查每一列和每一行是否重复
- python - 如何将进程中间的变量提取到另一个进程多处理python