2011-03-30 7 views
0

Comment vérifier les collisions entre deux UIImageViews en utilisant une méthode qui ne se trouve pas dans la classe ViewController?Obtenir des objets pour se «parler»?

Par exemple:

Cette méthode ci-dessous est dans la classe de rock, mais UIImageView en verre est dans le ViewController.

si (CGRectIntersectsRect (rock.frame, glass.frame)) { // faire des choses }

Il se plaint que le verre n'est pas déclarée. Alors, comment puis-je me référer à la UIImageView de verre dans le ViewController si j'appelle la méthode de collision de la classe de rock ??? Je ne sais pas trop comment faire pour que les classes se «parlent» en général - c'est un concept que je ne comprends pas vraiment, donc un petit exemple serait très apprécié! Ou si quelqu'un pouvait indiquer un bon endroit pour apprendre ce concept qui aiderait beaucoup. Merci.

Répondre

0

La solution était simple à la fin. Je n'ai tout simplement pas compris le concept des méthodes getter et setter.

Donc, la réponse était de faire une méthode dans l'objet « de verre » comme ceci:

-(BOOL)collidesWithRect:(CGRect)rect 
{ 
    return (CGRectIntersectsRect(self.frame, rect)); 
} 

Et puis l'appeler de l'objet « rock »:

if([rock collidesWithRect:glass.frame]) 
{ 
    //collision code 
} 

qui retourne vrai quand les deux rectangles se croisent. Je suis surpris que je n'ai pas eu de réponse pour cela car c'était une solution simple à la fin. Peut-être que je ne me suis pas bien expliqué? J'espère avoir expliqué la solution correctement. Sinon, n'hésitez pas à me corriger. Nous ne voudrions pas que l'aveugle conduise l'aveugle maintenant nous !!!

Questions connexes