Получить словарь ключа просмотра панорамирования и добавить его в массив - PullRequest
0 голосов
/ 28 сентября 2011

У меня есть куча UIImageViews в NSMutableDictionary.

Мой метод создания изображения:

for (int i = 1; i <= 5; i++)
{
    char a = 'a';
    NSString *key = [NSString stringWithFormat:@"%c%d", a, i];
    alphabetVowelA = [[UIImageView alloc] initWithFrame:CGRectMake(39, 104, 70, 70)];
    [alphabetVowelA setImage:[UIImage imageNamed:@"a.png"]];
    alphabetVowelA.tag = i;
    [alphabetVowelA setUserInteractionEnabled:YES];
    [self addGestureRecognizersToPiece:alphabetVowelA];
    [letterDictionary setObject:alphabetVowelA forKey:key]; //Adds the letter a UIImageView to dictionary with key: a1, a2, a3, a4, a5. 
    [self.view addSubview:alphabetVowelA];
    [alphabetVowelA release];
}

Вот мой метод панорамирования.

- (void)panPiece:(UIPanGestureRecognizer *)gestureRecognizer
{
    UIView *piece = [gestureRecognizer view];
    [self.view bringSubviewToFront:piece];


    if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {

        CGPoint translation = [gestureRecognizer translationInView:[piece superview]];

        CGRect startingPointFrame = CGRectMake(245, 428, 31, 20);
        [startingPoint setFrame:startingPointFrame];

        [piece setCenter:CGPointMake([piece center].x + translation.x, [piece center].y + translation.y)];
        [gestureRecognizer setTranslation:CGPointZero inView:[piece superview]];
    }


    if ([gestureRecognizer state] == UIGestureRecognizerStateEnded)
    {

        pannedPieces = [[NSMutableArray alloc] init];

        [pannedPieces addObject:piece];


        NSEnumerator *enumerator = [pannedPieces objectEnumerator];
        id element;

        NSUInteger arrayCount = [pannedPieces count];

        while(element = [enumerator nextObject])
        {
            NSUInteger i = [pannedPieces indexOfObject:element];
            NSLog(@"%@ \n @index %i \n Array Count: %i",element, i, arrayCount);
        }
}

Я пытаюсь добавить представления, которые были панорамированы и отброшены, в NSMutableArray, чтобы я мог работать с этими представлениями независимо от всех других моих представлений. Делая это с моим кодом выше, кажется, что каждый фрагмент, который панорамируется, не добавляет себя в конец массива, он только помещает его в индекс 0 каждый раз. Так что мой @index печатает 0, а Array Count печатает 1 независимо от того, сколько просмотров я панорамировал.

Вместо того, чтобы просто добавить «кусок», который был панорамирован, как я могу получить ключ словаря панорамируемого UIImageView, чтобы я мог добавить его в массив по ключу?

Надеюсь, этот вопрос имеет смысл.

1 Ответ

2 голосов
/ 28 сентября 2011

Эта строка:

pannedPieces = [[NSMutableArray alloc] init];

перезаписывает pannedPieces новым массивом каждый раз, когда вы входите в эту ветвь (и, вероятно, также пропускает).Если вы хотите собрать больше фрагментов, не используйте новый массив, а просто добавьте к существующему.

Чтобы получить ключ (и) для объекта из словаря, используйте -allKeysForObject:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...