Вопрос:

Как получить доступ к большинству контроллеров верхнего уровня в Xamarin iOS с Mvvmcross?

ios xamarin.ios xamarin mvvmcross

5749 просмотра

2 ответа

63 Репутация автора

мы хотим найти самый верхний ViewController в представлении, чтобы представить небольшое всплывающее окно. Чтобы сделать это, мы обнаруживаем навигационный контроллер главного окна rootviewcontroller:

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

Это работает в режиме отладки - в режиме выпуска «RootViewController» имеет значение NULL? Является ли MVX другим решением для этого? Как мы получаем доступ к UINavigationController?

Автор: Michael Probst Источник Размещён: 15.07.2013 02:28

Ответы (2)


2 плюса

61870 Репутация автора

Решение

Отличие от debug-to-release говорит мне, что это эффект Xamarin.iOS / MonoTouch - возможно, с настройками компоновщика.

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

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

Автор: Stuart Размещён: 15.07.2013 02:49

0 плюса

377 Репутация автора

Это дает вам Top View Controller

 var topVC = UIApplication.SharedApplication.KeyWindow.RootViewController;
                while (topVC.PresentedViewController != null)
                {
                    topVC = topVC.PresentedViewController;
                }
Автор: TheDeveloper Размещён: 20.11.2018 04:59
Вопросы из категории :
32x32