До сих пор при использовании своих приложений я использовал библиотеку управления навигацией, которая у меня есть с тех пор, как я использовал классические проекты Titanium (просто взял ее с собой, когда перешел к написанию приложений Alloy).
Я просмотрел источник Каталог сотрудников и увидел еще один (похожий) интересный подход к написание кросс-платформенной навигации более «сплавным» способом. Контроллеры находятся в index.xml представление и логика в index.js контроллер, в то время как приложение фактически запускается в другом каталоге контроллер и представление а>.
Я должен сказать, что этот способ немного чище, чем мой унаследованный код.
Но у меня есть одна вещь в моем унаследованном коде, которая является частью приложения, которое мне нужно создать сейчас, — это экран входа в систему. Что я делаю в своем коде, так это проверяю, вошел ли пользователь в систему, и если первое окно, которое я открываю, является экраном входа в систему, иначе, если пользователь вошел в систему, я открываю основное приложение.
В этом примере главное окно установлено в самом представлении:
<Alloy>
<!-- Default App Window -->
<Require id="index" src="main" platform="android,windows" />
<!-- iOS Window -->
<NavigationWindow id="nav" platform="ios" class="container">
<Require src="main" />
</NavigationWindow>
<!-- MobileWeb -->
<Window platform="mobileweb">
<NavigationGroup id="nav" class="container">
<Require src="main" />
</NavigationGroup>
</Window>
</Alloy>
Моя дилемма заключается в том, как сделать вход в систему открытым, если пользователь не вошел в систему. Я подумал о перемещении этого входа в главное окно, и если пользователь не вошел в систему, требуется контроллер входа в систему, который вернет представление, которое будет принимать весь экран и добавьте это представление на экран. Как только пользователь войдет в систему, удалите это представление.
Решение, которое я ищу, не должно влиять на производительность приложения, и я стараюсь не показывать некоторое «мерцание» пользователю, когда он впервые открывает приложение (фоновое изображение входа в систему такое же, как заставку). поэтому пользователь не должен видеть белый фон основного приложения, а затем загрузку входа.
Каков правильный ответ в такой ситуации (даже ценой сохранения моего старого навигационного контроллера, работающего только с кодом)?