2013-11-20 2 views
2

Я прошел большую часть учебников MvvmCross, и я подумал, что готов начать свой первый проект iOS. Однако я застрял в течение первого часа, пытаясь реализовать навигационную структуру.Структура навигации MvvmCross

Вот что я пытаюсь достичь:

1) Когда приложение сначала загружает, он должен показать экранную заставку с Войти и подпишите вверх кнопку. 2) Только после входа или регистрации пользователь может перейти на основной экран.

Я пытался сделать это с помощью команды в модели представления, как:

//authentication code here... 

ShowViewModel<MainViewModel>(); 

Проблема с этим состоит в том, что, когда он переходит к главному экрану, пользователь может нажать кнопку возврата на вверх и вернитесь к экрану входа в систему, а затем вернитесь к экрану заставки, снова нажав кнопку «Назад».

Решение, которое я нашел, состояло в том, чтобы использовать MainView в качестве начального представления, а экран Splash должен быть панелью поверх нее, которая становится невидимой, когда пользователь аутентифицируется. Но я не знаю, является ли это обычной практикой для этого сценария.

Спасибо!

ответ

2

Вы можете войти в свой класс App и изменить модель представления, загруженную после запуска приложения.

public class App : Cirrious.MvvmCross.ViewModels.MvxApplication 
{ 
    public override void Initialize() 
    { 
     CreatableTypes() 
      .EndingWith("Service") 
      .AsInterfaces() 
      .RegisterAsLazySingleton(); 

     Globals.Init().Wait(); 

     if (Globals.HasCredentials()) 
     { 
      RegisterAppStart<ViewModels.DispatchListViewModel>(); 
     } 
     else 
     { 
      RegisterAppStart<ViewModels.WelcomeViewModel>(); 
     } 
    } 
} 
+0

Что Глобалы ?! –

+0

Это просто класс в моем приложении. Это не имеет никакого отношения к MvvmCross. – Alexey

0

Если вы используете UINavigationController, вы можете совать заставку из стека просмотра с помощью:

NavigationController.PopViewControllerAnimated(true); 
Смежные вопросы