Как получить текущую позицию в NSArray в target-C - PullRequest
2 голосов
/ 27 января 2012

Новое в iOS-кодировании, так что это скорее вопрос синтаксиса, чем что-либо еще. Я пытаюсь реализовать UIImageView загружается с массивом объектов изображения. При смахивании вправо я хочу перейти к следующему объекту в массиве и загрузить его в представление. У меня массив загружен нормально, просто не знаю, как, синтаксически, как получить текущую позицию в массиве. Я понимаю, что это полный вопрос n00b, так что бесплатный кредит репутации для вас.

Вот какой-то код:

- (void)viewDidLoad
{
    [super viewDidLoad];  
    imageArray = [NSArray arrayWithObjects:[UIImage imageNamed:@"1.jpg"],[UIImage imageNamed:@"2.jpg"], nil];
    imageView.image = [imageArray objectAtIndex:0];

}

- (IBAction)swipeRightGesture:(id)sender {
 imageView.image = [imageArray somethingsomething];//load next object in array
}

Ответы [ 3 ]

3 голосов
/ 27 января 2012

Массивы не имеют текущей позиции.Они не потоковые, а просто контейнеры.

Таким образом, есть два способа исправить это:

  1. Сохранить позицию массива отдельно, как NSInteger в вашем представленииэкземпляр контроллера.Увеличивайте и уменьшайте его по мере необходимости.Используйте objectAtIndex, чтобы получить объект там.
  2. Найдите положение вашего текущего изображения, используя indexOfObject.Увеличивайте и уменьшайте это по мере необходимости.Используйте objectAtIndex, чтобы получить объект там.

Я бы рекомендовал первый подход.

1 голос
/ 04 февраля 2014

Решение приведено ниже.

-(void)next
{
    if (currentIndex < (count - 1))
    {
        currentIndex ++;
        NSLog(@"current index : %d", currentIndex);
    }
}

-(void) previous
{
    if (currentIndex > 1) {
        currentIndex --;
        [self.commsLayer  performOperation:currentIndex];
        NSLog(@"current index : %d", currentIndex);
    }else
    {
        if (currentIndex == 1) {
            currentIndex --;
            NSLog(@"first current index : %d", currentIndex);
        }
    }
}
1 голос
/ 27 января 2012
- (IBAction)swipeRightGesture:(id)sender 
{
     NSUInteger index = [imageArray indexOfObject:imageView.image] + 1;

     // do something here to make sure it's not out of bounds
     //

     imageView.image = [imageArray objectAtIndex:index];//load next object in array
}
...