0

Ich versuche, die Hintergrundfarbe einer Ansicht innerhalb einer Sammlungsansicht-Zelle zu ändern, wenn sich die Zelle nach dem Bildlauf in der Mitte des Gerätebildschirms befindet ist vorgefallen. Im Moment habe ich eine Arbeitsmethode, die die Hintergrundfarbe der Ansichten innerhalb alle aktuell sichtbaren Zellen verändern können, dass sieht wie folgt nach dem Scrollen:Zugriff auf eine Ansicht innerhalb der UICollectionView-Zelle, die in der Mitte des Gerätebildschirms positioniert ist

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ 


    if(scrollView==_collectionViewFollwersFeed) 
    { 
     for (UICollectionViewCell *cell in [self.collectionViewFollwersFeed visibleCells]) { 

      UIView *tsView; 

      tsView=(UIView *)[cell viewWithTag:99]; 

      tsView.backgroundColor = [UIColor redColor]; 

     } 
    } 
} 

Als ich versuchte, diese Methode zu bearbeiten, um nur die Hintergrundfarbe von die Ansicht in der Zelle, die in der Mitte positioniert ist, kann ich diese Funktionalität nicht funktionieren. Hier wird die eingestellt, dass ich arbeiten sollte glauben:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ 


    if(scrollView==_collectionViewFollwersFeed) 
    { 

     NSIndexPath *centerCellIndexPath = 
     [self.collectionViewFollwersFeed indexPathForItemAtPoint: 
     [self.view convertPoint:[self.view center] toView:self.collectionViewFollwersFeed]]; 

     UICollectionViewCell *cell; 
     NSString *CellIdentifier; 

     CellIdentifier = @"FollowersFeed"; 
     cell = [_collectionViewFollwersFeed dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:centerCellIndexPath]; 

     UIView *tsView = (UIView *)[cell viewWithTag:99]; 

     tsView.backgroundColor = [UIColor redColor]; 

    } 
} 

Hat jemand eine Idee, warum diese Methode ändert nicht die Ansicht Hintergrundfarbe der Zelle in der Mitte des Bildschirms?

Antwort

1

Das Problem ist, diese Zeile:

cell = [_collectionViewFollwersFeed dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:centerCellIndexPath]; 

, dass eine neue Zelle zu schaffen, die nicht diejenige ist, die Ihre Sammlung Ansicht zur Zeit angezeigt wird.

Um die Zelle zugreifen, die bereits in Ihrer Sammlung Ansicht Einsatz ist:

cell = [_collectionViewFollwersFeed cellForItemAtIndexPath:centerCellIndexPath]; 
Verwandte Themen