2

Что было бы лучшим подходом в Xcode, если я хочу иметь MainViewController, который отображается только в том случае, если пользователь вошел в систему, в противном случае отображается LoginViewController и после (успешного) входа в MainViewController.Где разместить Вход ViewController в раскадровке?

Ориентируясь в первую очередь на раскадровку:

  • (а) иметь LoginViewController (как первоначальный View Controller), а затем переход к MainViewController
  • (б) Иметь MainViewController (в начальной View Controller) и подключение к LoginViewController, , которое будет использоваться, если пользователь не зарегистрирован в
  • (c) Как (a), но в NavigationController embed ded

Или есть другие возможности?

Ориентируясь на код-логики: Если это будет обработано в AppDelegate или в Login- соответствующие MainViewController

Если кто-то есть пример кода, было бы неплохо.

ответ

2

(с)

я обычно делают LoginVC в качестве исходного VC.

  • Логически, пользователь, уже вошедший в систему, является специальным подсектором «Вариант использования». Поэтому имеет смысл использовать это как отправную точку .
  • Наличие LoginVC в качестве основы вашей иерархии навигации также позволяет легко выйти из системы, используя popToViewController:animated, независимо от , где они были в стеке nav.

Обращение к MainVC изнутри LoginVC, а не делегата приложения. Таким образом, у вас будет один набор кода для перехода, единственное различие заключается в том, что пользователь поставляет учетные данные, а в другом случае учетные данные кэшируются.

После того, как учетные данные подтвердятся использовать SEGUE, чтобы перейти к MainVC:

[self performSegueWithIdentifier:@"MainVCViewSegue" sender:nil]; 
+0

ли 'popToViewController: animated' работу вне в navigationcontroller? В документации я нахожу его в __UINavigationController Class Reference__. – jerik

+0

Работает только в навигационном контроллере. Есть ли причина, по которой вы не будете использовать 'UINavigationController'? – memmons

+0

Нет. Просто хотелось быть уверенным, что я понял это правильно. Поскольку это было бы моим решением c) не a). – jerik

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