2016-07-04 1 views
1

Я пытаюсь реализовать страницу входа для приложения MvvmCross-Forms. Когда приложение запускается, пользователю должен быть представлен экран входа в систему, если они не вошли в систему или не отправлены на домашнюю страницу, если они есть. Пользователь переходит на домашнюю страницу при входе в систему и направляется на страницу входа в систему, когда выходит из домашней страницы. Довольно стандартный материал - что вы ожидаете от приложения с аутентификацией.Страница входа с Xamarin MvvmCross-Forms - предотвращение обратной навигации на Android

Я реализовал это с помощью навигации MvvmCross ViewModel, но каждая навигация позволяет пользователю нажимать кнопку «Назад» в строке заголовка на Android или использовать кнопку возврата аппаратного обеспечения. Как пользователь, я бы ожидал, что главная страница после входа в систему станет «корневой» страницей и сможет вернуться к экрану входа в систему, явно решив выйти из системы.

Я понимаю, что типичным способом сделать это в Xamarin Forms было бы создание специального презентатора страниц под проектом Droid, который перехватывает вызовы на Show() и очищает задний стек при навигации на домашней странице или странице входа (например, верхний ответ для Xamarin MvvmCross Android Prevent Back Button returning to previous View). Тем не менее, похоже, что MvvmCross-Forms преднамеренно мешает вам реализовать эту функциональность - класс MvxFormsDroidPagePresenter наследует от кросс-платформенной MvxFormsPagePresenter вместо андроида, специфичного для MvxAndroidViewPresenter.

Я могу увидеть два варианта - попробуйте использовать один ViewModel/View для входа и домашней страницы или вырвать некоторые из функций MvxAndroidViewPresenter и поместить их в свой собственный пользовательский презентатор Android. Как это поведение будет реализовано идиоматически в MvvmCross-Forms?

+0

Вы можете попробовать использовать https://github.com/conceptdev/xamarin-forms-samples/tree/master/LoginDemo – Vishnu

ответ

0

Подход неправильный. То, что вы хотите сделать, - установить домашнюю страницу как root и сразу же после этого сделать страницу ModalPush для входа в систему, если пользователь не войдет в систему. Когда пользователь входит в систему, ModalPop и вы вернетесь к корневому файлу, который является домашней страницей.

В случае, если пользователь зарегистрирован, чем вы правы, где вы должны быть, - root, который является домашней страницей.

Надеюсь, это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^