2013-07-15 1 views
2

Мы хотим найти самый верхний ViewController в представлении, чтобы представить небольшое всплывающее окно. Для этого выясняет NavigationController ключевого окна RootViewController:Как получить доступ к большинству контроллеров верхнего уровня в Xamarin iOS с Mvvmcross?

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

Разница в отладке-релизе подсказывает мне, что это эффект Xamarin.iOS/MonoTouch - возможно, с настройками компоновщика.

Возможно, стоит погнаться за этой проблемой и попытаться ее исправить.

Однако, если вы хотите быстро исправить - если вы хотите использовать вместо сохраненную ссылку MvvmCross в к RootViewController, то вы можете сделать это в пользовательской Presenter, который наследуется от MvxTouchViewPresenter - см MvxTouchViewPresenter.cs#L158

+0

спасибо Стюарт для вашего быстро исправить .. Я уже реализовал его таким образом, и он отлично работает. Теперь нашему ViewPresenter принадлежит статическое свойство «RootViewController» - и у нас есть доступ к нему в любом месте приложения :) –