我有一个像这样的UICollectionView:
在每个单元格上,我添加一个按钮。当我单击该按钮时,它将推送到另一个视图控制器。它工作正常。但是当我尝试同时单击2按钮时(例如:Cell 1和Cell 7)。它称之为“推”两次。我收到警告:
嵌套推送动画可能导致导航栏损坏。 在意外状态下完成导航过渡。导航栏 子视图树可能已损坏。
这是我的代码:
AppDelegate.m
+ (AppDelegate *)shareInstance{
return (AppDelegate *)[[UIApplication sharedApplication] delegate];
}
- (UIViewController *)currentVisibleController{
id rootController = self.window.rootViewController;
if ([rootController isKindOfClass:[UINavigationController class]]) {
UINavigationController *navigationController = (UINavigationController *)rootController;
return navigationController.topViewController;
}
if ([rootController isKindOfClass:[UITabBarController class]]) {
UITabBarController *tabbarController = (UITabBarController *)rootController;
id topViewController = [tabbarController.viewControllers objectAtIndex:tabbarController.selectedIndex];
if ([topViewController isKindOfClass:[UINavigationController class]]) {
UINavigationController *navi = (UINavigationController *)topViewController;
return navi.topViewController;
}
return topViewController;
}
return self.window.rootViewController;
}
当我按下一个牢房时:
CustomCell.m
- (IBAction)pressOnCell:(id)sender {
SecondViewController *secondViewController = [[SecondViewController alloc] initWithNibName:NSStringFromClass([SecondViewController class]) bundle:nil];
[[AppDelegate shareInstance].currentVisibleController.navigationController pushViewController:secondViewController animated:YES];
}
答案 0 :(得分:0)
您可以将 pushViewController 中的动画选项设置为NO。或者,您可以在 viewWillDisAppear 上禁用集合视图上的用户互动,然后在 viewWillAppear 中启用它。或者,您可以在 didSelectItemAtIndexPath 中调用 pressOnCell ,并将集合视图的 allowsMultipleSelection 属性设置为NO。