Xamarin.Forms.Application.Current.MainPage 为空
Xamarin.Forms.Application.Current.MainPage is null
我有一个不寻常的案例场景,我正在将应用程序从 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 现在为 null - 某些库如 Rg.Plugins.Popup 无法正常工作,因为它们引用了 MainPage 而我遇到了崩溃。
关于如何保持 MainPage 引用的任何 help/idea?
谢谢!
PS
如果我调用 NavigationService.NavigateAsync(MyPage),我做了一些调查;来自 App.xaml.cs
或者做 => MainPage = new MyPage();然后 MainPage 的实例在所有应用程序生命周期中保持活动状态。
从原始评论中可以看出 post - 问题的解决是在 XF 成为应用程序启动时的第一响应者时移动应用程序逻辑。然后我正常管理导航,并在需要时加载 UIViecontrollers - 让 UIApplication.SharedApplication.KeyWindow 呈现 ViewController.
可以找到有关如何执行此操作的更多详细信息here
我有一个不寻常的案例场景,我正在将应用程序从 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 现在为 null - 某些库如 Rg.Plugins.Popup 无法正常工作,因为它们引用了 MainPage 而我遇到了崩溃。
关于如何保持 MainPage 引用的任何 help/idea?
谢谢!
PS
如果我调用 NavigationService.NavigateAsync(MyPage),我做了一些调查;来自 App.xaml.cs 或者做 => MainPage = new MyPage();然后 MainPage 的实例在所有应用程序生命周期中保持活动状态。
从原始评论中可以看出 post - 问题的解决是在 XF 成为应用程序启动时的第一响应者时移动应用程序逻辑。然后我正常管理导航,并在需要时加载 UIViecontrollers - 让 UIApplication.SharedApplication.KeyWindow 呈现 ViewController.
可以找到有关如何执行此操作的更多详细信息here