如何在Objective-C中获取NSArray中的当前位置

时间:2012-01-27 00:18:35

标签: ios uiimageview nsarray

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 个答案:

答案 0 :(得分:3)

数组没有当前位置。它们不像流,它们只是容器。

所以有两种方法可以解决这个问题:

  1. 在视图控制器实例中以NSInteger的形式单独保持数组位置。根据需要增加和减少它。使用objectAtIndex获取对象。
  2. 使用indexOfObject查找当前图片的位置。根据需要增加和减少。使用objectAtIndex获取对象。
  3. 我建议采用第一种方法。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

解决方案如下:

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