处理多个单元格选择和自定义转换

时间:2014-09-03 16:32:20

标签: ios uitableview uicollectionview uiviewanimation uicollectionviewcell

我们在此示例中使用了UICollectionView,但同样的问题将适用于UITableView方法。

选择时,我们在集合视图单元格上有一个自定义动画。它将单元格设置为动画,然后我们有一个UIViewControllerTransitioningDelegate

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {

在这个方法中我们有一些自定义动画代码,一旦动画完成,我们就会触发segue(这是一个自定义过渡)。

问题
问题是当您快速选择两个单元格时,两者都会出现动画,然后会混淆过渡/导航栏。

在这种情况下,一次只处理一个动画的最佳方法是什么?禁用mutli select不会改变任何东西,因为理论上我们不是选择多个只是快速选择一个而是另一个。

2 个答案:

答案 0 :(得分:0)

在didSelectItemAtIndexPath中将集合视图的allowsSelection属性设置为NO;这应该阻止用户选择第二个单元格。您可以在viewDidAppear中将其设置为YES,如果您稍后从您正在调整的控制器返回此同一集合视图。

答案 1 :(得分:0)

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
        if (self.cellAnimationInProgress == YES) {
            return;
        }

        dispatch_async(dispatch_get_main_queue(), ^(void) {
            //Code here is run on the main thread
            self.cellAnimationInProgress = YES;
        });

我使用了类似于上面提到的方法。在动画输出期间我保持BOOL并更新为YES的位置。然后当返回并动画回来一次完成时,BOOL会更新回NO,因此忽略第二次点击。