2013-02-08 2 views
0

Я ищу обратную связь по передовой практике, когда вы хотите представить LoginViewController как «ModalViewController» в приложении с TabBarController.Как представить ModalViewController в приложении iOS с TabBarController?

Дело заключается в следующем: - приложение поддерживает сеансы с функциональностью Войти/выход из системы - Когда приложение запускается он пытается войти в систему автоматически и либо отобразить TabBarController непосредственно или LoginViewController (отображается как ModalViewController, чтобы дать возможность отклонить анимацию при входе в систему) - Приложение имеет TabBarController с несколькими вкладками. - Каждый раз, когда ViewController представлено состояние пользователя проверяется - Если пользователь не вошел в ModalViewController с функцией входа в систему должны быть представлены - Если пользователь вручную выйти один и тот же ModalViewController должны быть представлены

У меня есть попытался придумать несколько разных конструкций, чтобы справиться с этим, и никто не чувствует себя полностью «правильным». Я работал над одним проектом, где это обрабатывалось с использованием подкласса UIWindow, который заменил UIWindow по умолчанию для приложений. Затем подкласс прослушивал различные уведомления, такие как «UserLoggedInSuccessfully», «UserLoggedOut» и т. Д., Для обработки презентации ModalViewController.

Есть ли другие решения? Я был бы признателен за любой вклад и опыт такого рода решений.

+1

Зачем следует проверять, зарегистрирован ли пользователь при переключении вкладок? Если вам необходимо войти в систему, чтобы использовать приложение, а затем просто войти в систему при запуске. Когда приложение выходит (или идет в фоновом режиме, если вы хотите), вы можете автоматически вывести пользователя из системы. – rdelmar

+0

Да, я думаю, что проверка, когда переключение вкладки не требуется, поскольку она будет обрабатываться на всех API-запросах в любом случае. Хорошая точка зрения. – oehman

ответ

1

Существуют различные решения этой проблемы, вы можете попробовать эти альтернативы, но первые один рекомендуемый подход, который я хотел бы сказать,

  1. Вы можете сделать свой HomeViewController, который будет первой вкладкой TabBarController по умолчанию для открывайте каждый раз и делайте LoginViewController отдельно, в AppDelegate вы можете проверить сеанс входа в didFinishLaunchingWithOptions, и если сеанс недействителен, тогда покажите LoginViewController как ModalViewController, иначе покажите TabBarController со всеми вкладками.

  2. Альтернатива может быть, чтобы все контроллеры в закладке, но когда вы представляете LoginViewController, после того, как пользователь вошел в систему, добавить все контроллеры в MutbaleArray и удалить текущий объект, который LoginViewController. После того, как пользователь выполнил вход в систему, сохраните информацию в цепочке ключей, и таким образом пользователю не нужно будет снова и снова вводить логин, таким образом вы можете избежать отображения LoginViewController каждый раз, как только пользователь попытается выйти из системы, а затем добавьте LoginViewController в массив а затем добавить все объекты TabBarController после LoginViewController.

0

Вы можете сделать следующее, когда пользователь откроет приложение, которое вы должны показать HiME в loginviewcontroller как RootViewController тогда, когда Войти успешно вы должны сделать tabbarviewcontroller как RootViewController. , то каждый раз, когда пользователь запускает приложение, вы должны проверить, имеет ли он действительный сеанс, вы сделаете табару в качестве корня , если сеанс истекает, когда вы на панели табуляции, вам нужно изменить контроллер корневого представления с вашего app delegate, чтобы войти в систему