2017-08-03 54 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