我们希望在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?
答案 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;
}