Ваш класс ApplicationDelegate указывает, какой контроллер будет служить корневым контроллером для приложения.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window.rootViewController = self.navigationController;
...
}
В этом примере экземпляр UINavigationController устанавливается в качестве корневого контроллера представления после того, как приложение завершило запуск (например, все ресурсы загружены и переход сделан из образа-заставки).
Если вы хотите, чтобы другой контроллер служил корнем вашего приложения, то это то место, где вы это сделаете.
Чтобы ответить на ваш вопрос о дизайне, это зависит от желаемого рабочего процесса. Исходя из того, что вы описали, я бы начал с контроллера представления barebones, который загружает представление / контроллер входа в систему. После аутентификации пользователя этот контроллер представления может переключиться в основное представление приложения. С таким дизайном вы можете легко переключиться обратно на LoginViewController, если вам нужно повторно аутентифицировать пользователя в любой момент.
ApplicationViewController (root)
- LoginViewController
- MainViewController (это может быть UINavigationController или любой другой, какой вам нужен)
Надеюсь, это поможет!