Я использую IIViewDeckController
в качестве контроллера корневого представления. Это библиотека, которая позволяет мне иметь скользящее меню, напоминающее скользящее меню в приложении facebook. Он работает, инициируя его с помощью центра и контроллера левого зрения, а затем устанавливая все это как контроллер корневого представления. Вот как это выглядит в AppDelegate.m
:Как отклонить контроллер модального представления, а затем сразу же представить, что контроллер представления представления представляет собой другой контроллер модального представления?
FeedViewController* mainFeed = [[FeedViewController alloc] init];
UINavigationController* mainStack = [[UINavigationController alloc] initWithRootViewController:mainFeed];
MenuViewController* sideMenu = [[MenuViewController alloc] init];
IIViewDeckController* viewDeck = [[IIViewDeckController alloc] initWithCenterViewController:mainStack leftViewController:sideMenu];
self.window.rootViewController = viewDeck;
Когда в контроллере представления центра (navStack
), У меня есть кнопка, которая при нажатии представляет модальный контроллер представления, login
:
- (void)openLogin{
LoginViewController* login = [[LoginViewController alloc] init];
[self presentViewController:login animated:YES completion:nil];
}
В login
, после того, как пользователь вводит свои учетные данные и регистрируется, я пытаюсь уволить navStack
login
, а затем немедленно нажать другой контроллер creator
:
- (void)dismissLoginController{
//get a reference to the mainFeed
IIViewDeckController* viewDeck = (IIViewDeckController*)self.presentingViewController;
UINavigationController* navStack = (UINavigationController*)viewDeck.centerController;
FeedViewController* mainFeed = (FeedViewController*)navStack.topViewController;
//have it dismiss login, then push creator
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
[mainFeed openListingCreator];
}
openListingCreator
в mainFeed
:
- (void)openListingCreator{
ListingCreatorViewController* creator = [[ListingCreatorViewController alloc] init];
UINavigationController* creationStack = [[UINavigationController alloc] initWithRootViewController:creator];
[self presentViewController:creationStack animated:YES completion:nil];
}
Ошибка я получаю это: Warning: Attempt to present <UINavigationController: 0xa40c790> on <IIViewDeckController: 0xa843000> whose view is not in the window hierarchy!
Я предполагаю, что это потому, что IIViewDeckController не на экране, когда я прошу его представить просмотрите контроллер. Однако openListingCreator
вызывается ПОСЛЕ того, как я отклоняю контроллер отображения login
, поэтому я не уверен, почему он это делает. Я считаю, что это имеет какое-то отношение к IIViewDeckController, поскольку я сделал этот точный точный процесс раньше в других проектах без него и не имел проблем.
Любые идеи?