我正在使用Facebook Auth SDK,以及Xamarin Forms C#示例.但是,Facebook SDK已经对该方法进行了折旧,并将其替换fromViewController
为在构造函数中添加变量的方法.我对Xamarin中的ViewControllers概念并不是特别熟悉,或者确实使用这个代码,因为它来自一个样本,所以有没有办法测量当前的ViewController?
我已经看到了一些.net示例,NSArray *viewContrlls=[[self navigationController] viewControllers];[viewContrlls lastObject];
但是,这种方法似乎不适用于Xamarin,因为self
它不包含navigationControllers的定义.
或者,是否有任何方法可以使用示例代码轻松计算出当前ViewController的哪个变量?
接受的答案不会给你当前的视图控制器,如果它在父级的堆栈中UINavigationController
,所以我想出了以下内容:
public static UIViewController GetTopViewController() { var window = UIApplication.SharedApplication.KeyWindow; var vc = window.RootViewController; while (vc.PresentedViewController != null) vc = vc.PresentedViewController; if (vc is UINavigationController navController) vc = navController.ViewControllers.Last(); return vc; }
执行此操作的最佳方法是传入对调用Auth方法的ViewController的引用.
但是,您也可以尝试这种方法(由AdamMemp在Xamarin论坛上提供)
var window= UIApplication.SharedApplication.KeyWindow; var vc = window.RootViewController; while (vc.PresentedViewController != null) { vc = vc.PresentedViewController; }