rootviewcontroller 中的 UINavigationController presentModalViewController 没有出现动画

Posted

技术标签:

【中文标题】rootviewcontroller 中的 UINavigationController presentModalViewController 没有出现动画【英文标题】:UINavigationController presentModalViewController in rootviewcontroller didn't present with animations 【发布时间】:2012-03-19 10:07:59 【问题描述】:

我有一种情况需要判断一个无效的会话并呈现 loing 视图控制器。现在,在我从服务器收到消息之后。我判断 statuscode 。如果是会话错误,我会发布通知。 rootviewcontroller 将处理通知。这是我在 rootviewcontroller 中的代码:

- (void)handleInvalidSessionNotification:(NSNotification *)notification
UINavigationController * tmpController = self.navigationController;
[tmpController popToRootViewControllerAnimated:NO];
LoginViewController * loginViewController = [[LoginViewController alloc] init];
UINavigationController * naviController = [[UINavigationController alloc] initWithRootViewController:loginViewController];
naviController.navigationBarHidden = YES;
[self.navigationController presentModalViewController:naviController animated:YES];

最初它不起作用。我找到了这个链接 UINavigationController popToRootViewController, and then immediately push a new view ,并更改了代码:

 UINavigationController * tmpController = self.navigationController;
[tmpController popToRootViewControllerAnimated:NO];

它可以工作,但没有动画,有人有解决方案或建议....谢谢您的帮助

【问题讨论】:

【参考方案1】:

我想知道为什么不简单地将 viewController 推送到现有的 navigationController 上。可能是这样的:

      - (void)handleInvalidSessionNotification:(NSNotification *)notification
      
             LoginViewController * loginViewController = [[LoginViewController alloc] init];       
             [self.navigationController popViewController:myViewController animated:YES];
      

【讨论】:

感谢您的建议....非常简单,而且绝对是一个很好的解决方案....谢谢,我会改变现在的风格

以上是关于rootviewcontroller 中的 UINavigationController presentModalViewController 没有出现动画的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C中的rootViewController和addSubview?

rootviewcontroller 中的 UINavigationController presentModalViewController 没有出现动画

更改 UISplitView 中的 RootViewController

如何从 rootViewController 中的多级导航更新 detailViewController.detailItem

GET_FILE 中的 PLSQL 异常处理

如何将rootviewcontroller更改为堆栈中的第三个viewcontroller