2016-01-03 7 views
5

私はFacebook Auth SDKとXamarinフォームC#exampleを使用しています。しかし、Facebook SDKはメソッドを減価償却し、コンストラクタにfromViewController変数を追加するものに置き換えました。私は、XamarinのViewControllerのコンセプトやサンプルからのこのコードの使用に特に満足しているわけではないので、現在のViewControllerを測定する方法はありますか?Xamarinで現在のUIViewControllerを見つける方法

私はいくつかのネットの例を見てきました。 NSArray *viewContrlls=[[self navigationController] viewControllers];[viewContrlls lastObject];しかし、selfにはnavigationControllersの定義が含まれていないため、このアプローチはXamarinでは機能しないようです。

また、サンプルコードを使用して、現在のどのViewController変数を簡単に調べる方法がありますか?

答えて

7

これを行う最善の方法は、Authメソッドを呼び出すViewControllerへの参照を渡すことです。

しかし、あなたはまた、受け入れ答えのwon'tはあなたの現在のビューコントローラを与える(Xamarin Forums上AdamKempの礼儀)

var window= UIApplication.SharedApplication.KeyWindow; 
var vc = window.RootViewController; 
while (vc.PresentedViewController != null) 
{ 
    vc = vc.PresentedViewController; 
} 
+0

ありがとう - 私は今これを試してみよう!ここで私はちょっと混乱しているビットです。サンプルでは、​​ボタンを持つ 'LoginPage()'が表示されますが、Facebookボタンは空のクラスです.iosプロジェクトでは、 'PopButtonRenderer.cs'にいくつかの定義があります。 Facebookのログイン画面。 –

6

このアプローチを試みることができるならば、親UINavigationControllerのスタック内のit'sだから私は次のことを思いついた:

var window = UIApplication.SharedApplication.KeyWindow; 
var vc = window.RootViewController; 
while (vc.PresentedViewController != null) 
    vc = vc.PresentedViewController; 

var navController = vc as UINavigationController; 
if (navController != null) 
    vc = navController.ViewControllers.Last(); 
+1

Upvoted、ありがとう、これは私が探していたものです。私に多くの時間を救った。 –

関連する問題