【发布时间】:2017-08-03 06:31:55
【问题描述】:
我创建了使用 Azure AD 进行身份验证的应用
在 Android 中它工作正常,但在 iOS 中,它需要 RootViewController 来加载页面。但是UIApplication.SharedApplication.KeyWindow 为空。所以我无法获得UIApplication.SharedApplication.KeyWindow.RootViewController
下面是代码:
var authResult = await authContext.AcquireTokenAsync(
graphResourceUri,
ApplicationID,
new Uri(returnUri),
new PlatformParameters(UIApplication.SharedApplication.KeyWindow.RootViewController)
);
我可以通过任何其他方式获得RootViewController
【问题讨论】:
-
您能否显示您在应用程序中的哪个位置调用了 await authContext.AcquireTokenAsync?也许您要提早了?
-
试试这个:UIApplication.SharedApplication.Delegate.GetWindow().RootViewController;
-
@ColeXia 如果过早调用它不会改变任何东西。
-
是的,如果在窗口生成之前调用这个“AcquireTokenAsync”函数,rootViewcontroller的返回肯定是null。
-
除非您的视图确实出现,否则您的 KeyWindow 为“null”。所以覆盖“ViewDidAppear()”,你可以访问“KeyWindow”,当然还有它的“RootViewController”。
标签: xamarin xamarin.ios xamarin.forms