Поддерживает ли MvvmCross раскадровки?

Я рассматривал возможность использования MvvmCross в качестве нашего решения для кроссплатформенной разработки, при этом предыдущая разработка была ориентирована исключительно на iOS. Мне очень понравилось, как раскадровки охватывают все представления вместе с потоком между ними.

Я знаю, что Monotouch поддерживает их использование в проектах раскадровки, с которыми мне приходилось работать, однако я не смог найти никаких ссылок/примеров его использования с MvvmCross.

Поддерживается ли это в настоящее время? или может кто-нибудь дать мне несколько советов относительно того, как я могу получить эту настройку. Инициация кажется проблемой, так как в проектах раскадровки метод FinishedLaunching в AppDelegate обычно пуст.


person zman    schedule 19.02.2013    source источник


Ответы (1)


Поддерживается ли это в настоящее время?

Я так не думаю.

Я никогда не использовал раскадровки для создания чего-либо, кроме демонстрационного приложения, поэтому я не эксперт.

Однако из того, что я знаю, я думаю, что есть 3 проблемы, которые вам нужно будет преодолеть.

1. Раскадровки не имеют кода в FinishedLaunching

Я думаю, это легко решить - вы можете просто добавить переопределение в FinishedLaunching, которое вызывает класс установки MvvmCross для инициализации IoC, плагинов, вашего приложения и т. д.

2. MvvmCross vNext требует, чтобы вы переопределяли конструкторы для таких форм, как

public DetailViewController (MvxShowViewModelRequest request) {
}

в то время как раскадровки требуют использования таких форм, как:

public DetailViewController (IntPtr handle) {
}

Преодолеть это сложнее… но хорошая новость заключается в том, что в версии 3 это должно быть намного проще — одна из заявленных целей версии 3 — каким-то образом поддерживать раскадровки — см. http://slodge.blogspot.co.uk/2013/02/mvvmcross-v3.html

3. Столкновение концепций

Если вы используете раскадровки, то логика навигации привязана к раскадровке и к UIViewController.

Если вы используете MvvmCross, то логика навигации привязана к ViewModels.

Преодолеть это было бы относительно просто — вы можете легко смешивать и сопоставлять концепции — но в результате ваши ViewModels и Views могут показаться вам «немного странными».


Резюме

Сделать это сегодня возможно, но потребуется несколько часов взлома.

Бета-версия v3 выйдет очень скоро (в течение нескольких недель — все зависит от моего свободного времени). Как только это будет доступно, я думаю, вы сможете приступить к работе намного быстрее.

person Stuart    schedule 19.02.2013
comment
Спасибо за быстрый ответ. Я думаю, что это может быть немного сложнее, когда выполняется обработка установки MvvmCross, поскольку я обнаружил, что метод FinishedLaunching может вызываться до или после создания экземпляра первого контроллера представления на основе версии iOS (он вызывается до в iOS 6 и выше в версиях ниже 5.1). Однако в более общем плане я вижу, что вы указываете на столкновение интересов, что заставляет меня пересмотреть мою близость - person zman; 19.02.2013
comment
... к использованию раскадровок. Я попробую отдельные xibs :) - person zman; 19.02.2013