Попытка обернуть голову вокруг того, как структурировать приложение вокруг UINavigationController.Мне кажется, что большинство объяснений предполагают, что приложение всегда запускается на корневом контроллере и оттуда детализируется, но мне неясно, как это согласуется с шагом входа в систему / регистрации, который происходит до того, как вы входите в приложение.Структура будет выглядеть следующим образом:
Home page | Main app (typical nav hierarchy)
------------ |---------------------------------
Log in ----> Login page | App section 1
------------ | App section 2
Do login ------------------------> | etc.
<- Cancel |
|
Register -------------------> Register page |
----------------- |
Do registration ---> |
<- Cancel |
Итак, в основном я предполагаю, что контроллер «Основное приложение» должен быть корневым контроллером приложения, верно?В этом случае мне неясно, как обрабатывать весь процесс, который находится перед ним (который в основном похож на структуру навигации, отдельную от структуры навигации приложения).Является ли «Домашняя страница» модальным контроллером, отображаемым поверх основного приложения, а также отдельным навигационным контроллером для шагов входа в систему / регистрации, чтобы после входа в систему она просто всплывала, чтобы вернуть нас в корень приложения?
Надеюсь, я просто слишком усложняю то, что на самом деле очень просто, но, похоже, пока что меня не зацепило.Любые указатели очень ценятся.
РЕДАКТИРОВАТЬ : Итак, вот что я закончил, что, кажется, работает для того, что мне нужно.У меня есть два UINavigationController, оба назначены MainWindow в IB с отдельными начальными NIB.Один - это навигационный контроллер запуска приложения (дом / логин / регистрация), а второй - главный контроллер навигации приложения.Мой делегат приложения имеет следующий код:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[window addSubview:startNavController.view];
[window makeKeyAndVisible];
return YES;
}
- (void)activateMainApp {
[startNavController.view removeFromSuperview];
[window addSubview:appNavController.view];
[window makeKeyAndVisible];
}
На последнем этапе входа в систему / регистрации у меня есть этот код, который вызывает делегат приложения для переключения между контроллерами навигации:
- (IBAction)continuePressed {
// Transfer control to the main app nav controller:
MyAppDelegate *app = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];
[app activateMainApp];
[app release];
}
Я подозреваю, что я мог бы сделать это с помощью одного контроллера Nav, но это имело логический смысл для меня, основываясь на моей структуре представления, и, кажется, работает, и я в конечном итоге получаю основной домашний вид в качестве корневого представления контроллера навигации приложения,по желанию.Любые дополнительные отзывы приветствуются, если в этом есть что-то сумасшедшее.