启动我的应用程序时,我向Storyboad显示其中的图像,如启动屏幕。 然后,我从AppDelegate类中的FinishedLaunching()方法调用LoadApplication(new App())。 在我的App.cs中,我需要访问UIApplication.SharedApplication.KeyWindow.RootViewController以显示进度栏。 但是Keywindow为null,因此会导致崩溃。
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为空。 有什么建议我做错了吗?
答案 0 :(得分:0)
原因:
此时尚未实例化keyWindow
。
解决方案:
您可以将show
函数放在OnStart
下。
protected override void OnStart()
{
// Handle when your app starts
DependencyService.Get<ILoadingService>().Show("Updating user token...");
}