对<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"); }
希望你在这个问题。