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?

4

2 回答 2

2

调试到发布的差异向我表明这是 Xamarin.iOS/MonoTouch 效果 - 可能与链接器设置有关。

可能值得追查这个问题并尝试解决它。

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

于 2013-07-15T14:49:29.443 回答
0

这为您提供了顶级视图控制器

 var topVC = UIApplication.SharedApplication.KeyWindow.RootViewController;
                while (topVC.PresentedViewController != null)
                {
                    topVC = topVC.PresentedViewController;
                }
于 2018-11-20T16:59:16.007 回答