2010-08-30 10 views
0

J'ai une sous-classe UIView appelée Carte que je déplace sur ma carte et que je dépose sur des points chauds appelés emplacements. Quand je laisse tomber la carte, j'utilise le hitTest pour savoir si je laisse tomber la carte sur l'un de mes hotspots. Je veux avoir une propriété de ce point chaud mais j'ai de la difficulté à le faire fonctionner correctement. Ma seule supposition est la hitTest renvoie un UIView et mon point chaud est une sous-classe UIView. L'erreur que je reçois est « Demande de membre « slotIndex » quelque chose pas une structure ou d'une union »Aide sur la propriété de sous-classe

Voici la méthode touchesEnded je me sers de ma classe carte

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event { 

    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInView:self.superview]; 

    [self setUserInteractionEnabled:NO]; 

    UIView *backView = [self.superview hitTest:location withEvent:nil]; 

    if ([backView isKindOfClass:[CardSlot class]]) { 
     self.center = backView.center; 

     NSLog(@"Slot Number: %@", backView.slotIndex); 

    } else { 
     //Move it back to the top corner 
     self.center = CGPointMake(50,50); 
    } 

    [self setUserInteractionEnabled:YES]; 

} 

Ma question est de savoir comment puis-je faire à propos de tester si je suis dans un emplacement hot spot et ensuite obtenir les propriétés de ce slot (sous-classe UIView)?

Répondre

0

Pour aider le compilateur, vous devez convertir le pointeur en CardSlot après avoir déterminé qu'il en est un. De cette façon, le compilateur peut connaître la propriété slotIndex. Par exemple:

if ([backView isKindOfClass:[CardSlot class]]) { 
    CardSlot *cardSlot = (CardSlot *)backView; 
    // From here you can access cardSlot.slotIndex 
} 
+0

Merci pour la réponse rapide et utile. – SonnyBurnette