Добавление объектов UIImageView в UIView в NSMutableArray - PullRequest
0 голосов
/ 17 ноября 2011

Я полагаю, что могу столкнуться с некоторыми проблемами просмотра, которые не позволяют мне обнаруживать и добавлять UIImageView объекты в массив.Я мог бы действительно использовать некоторые предложения.

У меня есть число UIImageViews с изображениями, связанными с UIView, который расположен поверх UIViewController (UIView был добавлен, чтобы помочь сdrawRect и некоторые дополнительные преимущества).Поэтому, когда я касаюсь изображения и перетаскиваю его, я хочу добавить это изображение в массив после удаления.

My 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 Ответ

1 голос
/ 17 ноября 2011

Ваша последняя часть кода показывает, что вы неинициализированы quoteArray. Проверяйте код при создании, я думаю, вы что-то упустили в вашем методе init. Потому что если массив был корректным, то NSLog должен показываться ниже:

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

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

...