【问题标题】:Find the current top view controller and push view controller查找当前顶视图控制器并推送视图控制器
【发布时间】:2015-07-23 18:15:09
【问题描述】:

我有一个这样的 UICollectionView:

在每个单元格上,我添加了一个按钮。当我单击该按钮时,它将推送到另一个视图控制器。它工作正常。但是当我尝试同时单击 2 按钮时(例如:单元格 1 和单元格 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];
}

【问题讨论】:

    标签: ios objective-c uinavigationcontroller tabbar pushviewcontroller


    【解决方案1】:

    您可以将 pushViewController 中的动画选项设置为 NO。或者,您可以在 viewWillDisAppear 上禁用集合视图上的用户交互,然后在 viewWillAppear 中启用它。或者您可以在 didSelectItemAtIndexPath 中调用 pressOnCell 并将集合视图的 allowsMultipleSelection 属性设置为 NO。

    【讨论】:

      猜你喜欢
      • 2016-10-22
      • 2010-12-11
      • 2016-07-29
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多