【发布时间】:2014-01-12 22:56:05
【问题描述】:
我使用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 有关,因为我之前在其他没有它的项目中也做过同样的完全相同的过程并且没有任何问题。
有什么想法吗?
【问题讨论】:
标签: ios iphone objective-c