我想在点击collectionviewCell时显示activityIndicator动画。但它没有用,我找不到问题。 ActivityIndicator在Custom collectionViewCell类中定义。
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
VMSListCell *cell = [_myCollectionView dequeueReusableCellWithReuseIdentifier:@"myCell" forIndexPath:indexPath];
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Inside of main queue with activityindicator");
cell.activityIndicator.hidden = false;
[cell.activityIndicator startAnimating];
});
NSLog(@"After main queue");
}
我正在使用自定义单元格。日志打印"主要队列内部带有活动指示符"但不是"在主队列"之后。并且没有活动指示器旋转。
因为我会做一个http请求,点击collectionviewCell后,我把活动动画方法放在主队列中。我也尝试过没有主要队列,它也没有工作。
答案 0 :(得分:3)
问题在于这一行
VMSListCell *cell = [_myCollectionView dequeueReusableCellWithReuseIdentifier:@"myCell" forIndexPath:indexPath];
在,doselect方法中,你正在使用可重用的单元格,它永远不会工作,对于cellforItemAtIndexPath方法来说很好,但对于didSelectItemAtIndexPath方法来说是完全错误的。
将上一行改为此
VMSListCell *cell = [_myCollectionView cellForItemAtIndexPath:indexPath];