2016-01-03 18 views
5

Używam Facebook Auth SDK, z Xamarin Forms C# example. Jednak pakiet SDK Facebooka zdeprecjonował tę metodę i zastąpił ją taką, która dodaje zmienną fromViewController do konstruktorów. Nie jestem szczególnie wygodne z koncepcją ViewControllers w Xamarin, a nawet z tym kodem, ponieważ jest z próbki, więc czy istnieje sposób, aby ocenić bieżący ViewController?Jak znaleźć bieżący kontroler UIViewController w Xamarin

Widziałem kilka przykładów .net, np. NSArray *viewContrlls=[[self navigationController] viewControllers];[viewContrlls lastObject]; Jednak to podejście nie działa z Xamarin, ponieważ self nie zawiera definicji dla navigationControllers.

Czy istnieje sposób na łatwe ustalenie, z której zmiennej jest pobierany bieżący ViewController za pomocą przykładowego kodu?

Odpowiedz

7

Najlepszym sposobem na to jest przekazanie odwołania do obiektu ViewController wywołującego metodę Auth.

Jednak można również spróbować tego podejścia (dzięki uprzejmości AdamKemp na Xamarin Forums)

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

Dzięki - spróbuję tego teraz! Oto ten kawałek, który mnie zdezorientował. W przykładzie zobaczysz 'LoginPage()', który ma tylko przycisk, ale przycisk Facebook jest pustą klasą, która w projekcie ios ma kilka definicji w 'FacebookButtonRenderer.cs', Który ViewController jest aktywny podczas mojego PopUp'a ekran logowania na Facebooku. –

6

Przyjęte won't odpowiedź daje bieżący kontroler widoku jeśli its w stosie rodzica UINavigationController , więc wymyśliłem:

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

Przegłosowano, dziękuję, właśnie tego szukałem. Zaoszczędziłem mnóstwo czasu. –

Powiązane problemy