如何使用Mvvmcross访问Xamarin iOS中的大多数顶视图控制器?

ios xamarin.ios xamarin mvvmcross

5749 观看

2回复

我们想在viewstack中找到最顶级的ViewController来呈现一个小弹出窗口。为此,我们找到了关键窗口rootviewcontroller的NavigationController:

var root = UIApplication.SharedApplication.KeyWindow.RootViewController.NavigationController;
var ctrl = rootNav.TopViewController as ViewControllerBase; // our own VC
return ctrl != null ? ctrl.Popup : null;

这在调试模式下工作 - 在发布模式下,'RootViewController'为空?MVX是否为此提供了不同的解决方案?我们如何访问UINavigationController?

作者: Michael Probst 的来源 发布者: 2019 年 6 月 12 日

回应 (2)


2

决定

调试发布的不同之处告诉我,这是一个Xamarin.iOS / MonoTouch效果 - 可能与链接器设置有关。

它可能值得追逐这个问题,并试图解决它。

但是,如果你想要快速修复 - 如果你想使用MvvmCross存储的RootViewController引用,那么你可以在继承自的自定义Presenter中执行此操作MvxTouchViewPresenter- 请参阅MvxTouchViewPresenter.cs#L158

作者: Stuart 发布者: 15.07.2013 02:49

0

这为您提供了顶级View Controller

 var topVC = UIApplication.SharedApplication.KeyWindow.RootViewController;
                while (topVC.PresentedViewController != null)
                {
                    topVC = topVC.PresentedViewController;
                }
作者: TheDeveloper 发布者: 20.11.2018 04:59
32x32