2011-11-16 4 views
0

Je crois que je fais face à des problèmes d'affichage qui ne me permettent pas de détecter et d'ajouter des objets UIImageView à un tableau. Je pourrais vraiment utiliser quelques suggestions.Ajout d'objets UIImageView dans UIView à NSMutableArray

J'ai plusieurs UIImageViews avec des images liées à un UIView qui se trouve au-dessus d'un UIViewController (le UIView a été ajouté pour aider à drawRect et quelques avantages supplémentaires). Donc, quand je touche une image et que je la fais glisser, je veux ajouter cette image à un tableau après avoir été supprimée.

Mon touchesBegan obtient l'emplacement du contact et des contrôles UIImageView est touchée et les centres puis ce point de vue comme suit:

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

      UITouch *touch = [[event allTouches] anyObject]; 

      CGPoint location = [touch locationInView:self]; //can't use self.view in a UIView, this may be causing issues? 

      startLocation = location; // for reference as needed 



    NSLog(@"Image x coord: %f", location.x); 

    NSLog(@"Image y coord: %f", location.y); 

    if ([touch view] == obiWan_Block) 

      {obiWan_Block.center = location;} 

    else if ([touch view] == r2d2_Block) 

      {r2d2_Block.center = location;} 

    else if ([touch view] == you_Block) 

      {you_Block.center = location;} 

} 

Ensuite, je fais glisser la UIImageView autour avec touchesMoved et enfin, «baisse du image avec touchesEnded. Lorsque le UIImageView est déposé dans une certaine zone de l'écran, je l'enclenche à un endroit spécifique. C'est à ce moment que je veux placer ce UIImageView dans un tableau, mais je n'ai pas de chance. Je crois que je suis confus sur les différents points de vue touchés et ce qui est ajouté via addObject à mon NSMutableArray. Ou, je pourrais manquer quelque chose complètement. Voici ma méthode touchedEnded:

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

      UITouch *touch = [[event allTouches] anyObject]; 

      CGPoint location = [touch locationInView:self]; 

      UIView *temp = [touch view]; 

      UIImageView *currentImageView = (UIImageView *)[touch view]; //DON'T THINK THIS IS RIGHT 

    NSLog(@"Current Image View is: %@", currentImageView); 

    if ((location.x > dropZone.origin.x) && (location.y >= dropZone.origin.y) && ([touch view] != NULL)) 

     { 

      CGRect frame = temp.frame; 

      if (touchCount == 0) { 

       frame.origin.x = 15; 

       frame.origin.y = 180; 

       temp.frame = frame; 

       [quoteArray addObject: currentImageView]; 

       touchCount++; 

       } 

      else if (touchCount == 1) { 

       frame.origin.x = 70; 

       frame.origin.y = 180; 

       temp.frame = frame; 

       [quoteArray addObject: currentImageView]; 

       touchCount++; 

       } 

       .... 

J'ai une déclaration NSLog pour vérifier si addObject fonctionne comme suit:

NSLog(@"the quote array contains %d items. Contents = %@",[quoteArray count], quoteArray); 

Le journal dit toujours:

le tableau de devis contient 0 articles . Table des matières = (null)

S'il vous plaît aviser et merci!

Répondre

1

Votre dernière partie du code indique que vous n'avez pas initialisé quoteArray. Vérifiez le code lorsque vous le créez, je suppose que vous avez manqué quelque chose dans votre méthode init. Parce que si le tableau était correcte, alors NSLog doit montrer ci-dessous:

NSArray *quoteArray = [NSArray array]; 
NSLog(@"%@", quoteArray); 

2011-11-17 17: 37: 00,506 TestApp [1382: 207]()

+0

Merci !! J'initialisais en effet mon NSMutableArray au mauvais endroit. Ce sont toujours les choses simples qui prennent des heures à réparer! :-) – jeffjohn01

Questions connexes