2017-08-03 47 views
1

让RootViewController的我创建的应用程序,它可以验证使用Azure的AD无法在Xamarin的iOS

在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

+0

你可以显示你的应用程序中你要调用的地方是否等待authContext.AcquireTokenAsync?也许你早点把它叫到? – ChristiaanV

+0

试试这个:UIApplication.SharedApplication.Delegate.GetWindow()。RootViewController; –

+0

@ColeXia如果调用得太早,不会改变任何东西。 –

回答

1

这看起来蠢方法有效任何其他方式。

 UIWindow window = UIApplication.SharedApplication.KeyWindow; 
     UIViewController presentedVC = window.RootViewController; 
     while (presentedVC.PresentedViewController != null) 
     { 
      presentedVC = presentedVC.PresentedViewController; 
     } 
0

我也试过这个代码,但它不工作。

我得到了这个问题的根源。问题是,当我要访问RootViewController时,应该至少有一个页面已初始化,但它不是初始化的,所以我无法获得RootViewController,所以我每天都给予初始化页面,然后我得到了RootViewController