2017-05-28 3 views
0

Ich habe diese Methode:generischen Typen in Unterklasse Klasse ändern

-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer 
{ 
    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { 
     CGPoint p = [gestureRecognizer locationInView:self.collectionView]; 
     NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:p]; 
     if (indexPath == nil){ 
      NSLog(@"couldn't find index path"); 
     } else { 
      UICollectionViewCell* cell = [self.collectionView cellForItemAtIndexPath:indexPath]; 
         if ([cell isKindOfClass:[MWGradeCell class]]){ 
       NSLog(@"Yes"); 
      //here I would like to get a custom property "cell.gradeLabel.text" that is specific to MWGradeCell 
      } else{ 
       NSLog(@"No"); 
      } 
     } 

    } else{ 
     NSLog(@"ended"); 
    } 

} 

Es erkennt, welche UICollectionviewcell eines UICollectionview ist lang gedrückt. Meine UICollectionView ist mit verschiedenen Typen von untergeordneten UICollectionViewCells aufgebaut, die jeweils unterschiedliche Eigenschaften haben.

Jetzt möchte ich nur eine Eigenschaft eines bestimmten Zelltyps bekommen, aber um das zu tun, muss ich irgendwie die erkannte UICollectionViewCell in eine MWGradeCell ändern.

Keine Ahnung wie. Zum Glück, Sie Leute sind um

Antwort

0

Ich bin mir nicht sicher, ob ich die Frage verstehen, aber man kann einfach werfen Zelle wie:

MWGradeCell* cell = (MWGradeCell *)[self.collectionView cellForItemAtIndexPath:indexPath]; 

kann mich nicht erinnern, wenn (MWGradeCell *) wirklich notwendig ist

+0

Danke, ich habe Das. Aber die App stürzte bei verschiedenen Klassen ab. Dann habe ich den obigen Code ausprobiert. Ich hätte die beiden Ansätze kombinieren sollen. Und ja, das (MWGradeCell *) ist notwendig, sonst funktioniert der cellforitematindexpath nicht. – Sjakelien

Verwandte Themen