2016-04-28 4 views
4

Я новичок в Xamarin Forms (и в Prism также). Я пытаюсь создать свое первое приложение для форм xamarin и нуждаюсь в потоке входа.Xamarin forms + prism login flow

Я попытался проверить, зарегистрирован ли пользователь в приложении. Необязательный метод (и показать Логин или Главная страница в зависимости от результата). Но проблема в том, что если я показываю страницу входа, а затем после входа в систему я показываю главную страницу, то пользователь может перейти на страницу входа с помощью аппаратных кнопок.

Затем я попытался проверить это в OnNavigationTo на главной странице, но он также не работает. Я проверил это в версии PRE и стабильной версии и имел разные ошибки. В одном из них навигация просто не работала, в другом - я получил сообщение об ошибке, что не удалось создать главную страницу.

Затем я попытался ввести навигационную службу в MainPage (а не модель представления), но я узнал, что навигационное обслуживание не может быть введено там.

После этого я решил отправить сообщение из вида после базы. Приобрести и подпишитесь на это сообщение в модели вида и выполните навигацию для входа в систему, если это необходимо в качестве обратного вызова. Но есть одна очень странная проблема. Если я использую ToolBarItems на MainPage, то на телефоне Windows он исчезает после перехода с страницы входа (но неожиданно, страница входа на Windows-телефон имеет эти элементы панели инструментов). Похоже, метод OnAppearing на пожарах Windows-телефонов перед загрузкой элементов панели инструментов , В любом случае, это не решение.

Затем я решил добавить пустую страницу и отправить сообщение после того, как base.onAppearing в модель просмотра, и внутри этой модели просмотра я переадресую логин или главную страницу. Таким образом, он работает с одним маленьким «НО». Если я нажму кнопку возврата оборудования на странице входа или главной странице, я не закрываю приложение, так как я перехожу на пустую страницу, которая перенаправляет меня на логин или главную страницу.

Есть ли способ внедрить входной поток с помощью призмы? Мне очень нравится, так как это очень мощный фреймворк. Заранее спасибо!

ответ

3

Имейте в виду, что OnNavigatedTo работает только при использовании последней версии предварительного просмотра и вызывает NavigationService.Navigate. Здесь есть несколько подходов. Сначала вы можете перейти к MainPage, а затем проверить OnNavigatedTo. Если вы не вошли в систему, перейдите к LoginPage. Вы также можете просто проверить запуск приложения. Когда вы показываете LoginPage, вы можете использовать абсолютный URI для замены всего стека навигации. По сути, это означает, что MainPage = new MainPage().

+0

Большое спасибо, Брайан! – Denis

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