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

时间:2013-07-15 14:28:58

标签: ios xamarin.ios xamarin mvvmcross

我们希望在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?

2 个答案:

答案 0 :(得分:2)

差异调试发布告诉我这是一个Xamarin.iOS / MonoTouch效果 - 可能与链接器设置有关。

可能值得追究这个问题并尝试修复它。

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

答案 1 :(得分:0)

这为您提供了顶级View Controller

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