当前位置:  开发笔记 > 编程语言 > 正文

如何在Xamarin中找到当前的UIViewController

如何解决《如何在Xamarin中找到当前的UIViewController》经验,为你挑选了2个好方法。

我正在使用Facebook Auth SDK,以及Xamarin Forms C#示例.但是,Facebook SDK已经对该方法进行了折旧,并将其替换fromViewController为在构造函数中添加变量的方法.我对Xamarin中的ViewControllers概念并不是特别熟悉,或者确实使用这个代码,因为它来自一个样本,所以有没有办法测量当前的ViewController?

我已经看到了一些.net示例,NSArray *viewContrlls=[[self navigationController] viewControllers];[viewContrlls lastObject];但是,这种方法似乎不适用于Xamarin,因为self它不包含navigationControllers的定义.

或者,是否有任何方法可以使用示例代码轻松计算出当前ViewController的哪个变量?



1> xleon..:

接受的答案不会给你当前的视图控制器,如果它在父级的堆栈中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;
}



2> Jason..:

执行此操作的最佳方法是传入对调用Auth方法的ViewController的引用.

但是,您也可以尝试这种方法(由AdamMemp在Xamarin论坛上提供)

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

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有