Разные представления в зависимости от типа пользователя — правильный тип перехода после входа в систему?

#ios #xcode #ios7 #xcode5 #segue

#iOS #xcode #ios7 #xcode5 #segue

Вопрос:

У меня есть контроллер представления входа, который является начальным контроллером представления. Здесь пользователи вводят свое имя пользователя и пароль, которые затем отправляются на сервер для проверки. Если пользователь ввел правильные учетные данные, сервер отвечает некоторыми данными JSON, включая тип пользователя (либо «студент», либо «демонстратор»). Я использую возвращаемый тип пользователя, чтобы решить, какие представления увидит пользователь. (пользователи будут видеть разные контроллеры вкладок)

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

Является ли модальный тип перехода правильным для использования в этой ситуации? Пользователь вообще не вернется к экрану входа в систему.

Ответ №1:

Имейте в виду, что вы НЕ МОЖЕТЕ вложить контроллеры навигации. Включение контроллера навигации в стек навигации приводит к типам ошибок, которые вы видели с отсутствующими заголовками и тому подобным. Всегда модально переходите к контроллеру навигации и используйте unwind segues, чтобы вернуться, если вам нужно.

Push-переход используется исключительно для отправки контроллера представления назначения в стек навигации. Начальный контроллер просмотра должен находиться в стеке навигации, прежде чем вы сможете нажать segue. Если ваше представление входа в систему является корневым представлением контроллера навигации, то переход к следующему представлению — это правильный путь.

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

Некоторые справочные материалы от Apple: https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/UsingViewControllersinYourApplication/UsingViewControllersinYourApplication.html#//apple_ref/doc/uid/TP40007457-CH6-SW1