Невозможно получить доступ к UIApplication.SharedApplication.KeyWindow во время запуска приложения, так как keywindow всегда имеет значение null
Когда мое приложение запущено, я показываю Storyboad с изображением, похожим на заставку. Затем я вызываю LoadApplication(new App()) из метода FinishedLaunching() в классе AppDelegate. В моих App.cs мне нужно получить доступ к UIApplication.SharedApplication.KeyWindow.RootViewController, чтобы показать индикатор выполнения. Но Keywindow является нулевым и, следовательно, происходит сбой.
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
DependencyService.Register<ILoadingService,LoadingService>();
global::Xamarin.Forms.Forms.Init();
Xamarin.FormsGoogleMaps.Init("AIzaSyCqt-tfGrKhauCgC2Y5UkPreXfMZisPOH8");
LoadApplication(new App());
UIWindow.Appearance.TintColor = new UIColor(red: 0.55f, green: 0.76f, blue: 0.29f, alpha: 1.0f);
return base.FinishedLaunching(app, options);
}
Файл App.cs:
public App(string ticketNumberNotifParam = null, int ticketID = 0)
{
DependencyService.Get<ILoadingService>().Show("Updating user token...");
LoadHomepage();
}
LoadingService ();
public void Show(string title, string message = "Loading")
{
UIViewController controller =
UIApplication.SharedApplication.KeyWindow.RootViewController;
hud = new MTMBProgressHUD(controller.View);
controller.View.AddSubview(hud);
}
Здесь Keywindow является нулевым. Есть предложения, что я делаю не так?
1 ответ
Причина:
keyWindow
не был создан в тот момент.
Решение:
Вы можете поставить свой show
функция под OnStart
,
protected override void OnStart()
{
// Handle when your app starts
DependencyService.Get<ILoadingService>().Show("Updating user token...");
}
Ссылка: приложение-жизненный цикл