添加UIView中的UIImageView对象到NSMutableArray



我相信我可能正在处理一些视图问题,这些问题不允许我检测和添加UIImageView对象到数组。我真的需要一些建议。

我有一些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;}
}

然后,我用touchesMoved拖动UIImageView,最后,用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项。Contents = (null)

请指教,谢谢!

代码的最后一部分显示您没有初始化quoteArray。创建时检查代码,我猜你在init方法中漏掉了什么。因为如果数组是正确的,那么NSLog应该显示如下:

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

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

最新更新