2011-11-16 74 views
0

我相信我可能正在处理一些视图问题,这些问题不允许我检测并将UIImageView对象添加到数组。我真的可以使用一些建议。将UIImage中的UIImageView对象添加到NSMutableArray

我已经得到了一些UIImageViews与链接到UIView上一个UIViewController顶部位于图像(UIView加入帮助drawRect和一些额外的好处)。所以,当我触摸图像并“拖放”它时,我想在丢弃时将该图像添加到数组中。

touchesBegan得到触摸和检查UIImageView被触摸的位置,然后在该视图中心如下:

-(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;} 

} 

然后,我拖动UIImageView周围touchesMoved最后,“降”的图片与touchesEnded。当UIImageView放在屏幕的某个区域时,我会将其“捕捉”到特定位置。在这一点上,我想把这个UIImageView放入一个数组中,但我没有运气。我相信我对所触及的各种观点以及通过addObject添加到我的NSMutableArray的内容感到困惑。或者,我可能完全错过了一些东西。这里是我的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++; 

       } 

       .... 

我有一个NSLog语句来检查,如果addObject工作如下:

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

日志总是说:

报价数组包含0项。内容=(空)

请指教,谢谢!

回答

1

您的代码的最后一部分显示您有未初始化的quoteArray。在创建它时检查代码,我猜你错过了init方法中的某些东西。因为如果阵列是正确的,那么NSLog的应该显示如下:

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

2011-11-17 17:37:00.506 TestApp [1382:207]()

+0

谢谢!我确实在错误的地方初始化了我的'NSMutableArray'。总是需要数小时才能解决的简单事情! :-) – jeffjohn01

相关问题