2017-05-05 13 views
0

UIViewControllerにはUICollectionViewが添付されています。問題は、コレクションビューを上にスクロールするたびにviewForSupplementaryElementOfKindが呼び出されることです。 viewForSupplementaryElementOfKindを複数回呼び出すことを止める方法はありますか?UICollectionView viewForSupplementaryElementOfKind複数回呼び出されます

+0

ラベルのデザインを変更しません、そのは、あなたのセクションに基づいて呼び出された –

+0

は1時間、より多くの呼び出しを停止する任意のソリューションがあります数えます? –

+0

ハッハッハ、その後、1つのセクションを設定し、別のものを追加する行を追加する –

答えて

0

viewForSupplementaryElementOfKindの呼び出しは、セクションの数とセクションヘッダー/フッターの可用性によって異なります。 viewForSupplementaryElementOfKindは、ヘッダーまたはフッターがあるセクションがビューに表示されるたびに呼び出されます。

0

最後に、私は魅力的なように機能するソリューションを考え出しました... 私は、私が初めてそれを作成し、ループに入るたびにviewForSupplementaryElementOfKindにタグ値が設定されているかどうかをチェックします。それがすでに設定されている場合は、それが再び

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath 
{ 
    if ([kind isEqualToString:UICollectionElementKindSectionHeader]) 
    { 
     UICollectionReusableView *reusableview = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView" forIndexPath:indexPath]; 
     if([reusableview viewWithTag:101] == nil) 
     { 
     [[reusableview viewWithTag:101] removeFromSuperview]; 
     pointsAmountLabel = [[UILabel alloc] init]; 
     pointsAmountLabel.frame = CGRectMake(0, 20, [UIScreen mainScreen].bounds.size.width, 20); 
     pointsAmountLabel.text = @"0"; 
     pointsAmountLabel.tag = 101; 
     pointsAmountLabel.font = [UIFont boldSystemFontOfSize:16]; 
     [reusableview addSubview:pointsAmountLabel]; 
    } 
    return reusableview; 
    } 
return nil; 
} 
関連する問題