对<TSActivityMapVC:0x81b1000>开始/结束外观转换的不平衡调用

当我启动UITabBarController其中每个选项卡包含UINavigationController和每个UINavigationController包含UIViewController时,在UIViewController我做了类似

 TSActivityDetailsVC * c = [[TSActivityDetailsVC alloc] initWithNibName:@"TSActivityDetailsVC" bundle:nil]; [self.navigationController pushViewController:c animated:YES]; 

我有animation,但当我按下button – 我没有animation,并得到错误

日志:

 push view controller Unbalanced calls to begin/end appearance transitions for <TSActivityMapVC: 0x81b1000>. back btn pressed Unbalanced calls to begin/end appearance transitions for <TSActivityDetailsVC: 0x81c85d0>. 

初始化代码:

 -(UITabBarController *) createMainTabBarController{ UITabBarController * tabbarCntr = [[UITabBarController alloc] init]; [tabbarCntr setViewControllers:[NSArray arrayWithObjects: [[UINavigationController alloc] initWithRootViewController:[[TSActivityMapVC alloc] init]], [[UIViewController alloc] init], [[UIViewController alloc] init], [[UIViewController alloc] init], [[UIViewController alloc] init] , nil]]; [tabbarCntr.tabBar setSelectionIndicatorImage:[UIImage imageNamed:@"selection_indicator"]]; [tabbarCntr.tabBar setBackgroundImage:[UIImage imageNamed:@"tabbar_background"]]; return tabbarCntr; } 

TSActivityMapVC执行

 TSActivityDetailsVC * c = [[TSActivityDetailsVC alloc] initWithNibName:@"TSActivityDetailsVC" bundle:nil]; [self.navigationController pushViewController:c animated:YES]; 

令人惊讶的是,当我去到另一个选项卡,并返回 – 之后 – 所有工作正常没有错误

我得到了解决scheme! 我的子类UITabBarController忘了调用viewWillAppear超级 。 所以UITabBarController的过渡animation还没有完成。

这导致了“不平衡的呼叫开始/结束外观”!

最后我已经复制了你的错误。 这两种方法似乎都被忘记叫超级。

 -(void)beginAppearanceTransition:(BOOL)isAppearing animated:(BOOL)animated{ [super beginAppearanceTransition:isAppearing animated:animated]; NSLog(@"**************begin app tr"); } -(void)endAppearanceTransition{ [super endAppearanceTransition]; NSLog(@"**************end app tr"); } 

希望你在这个问题。