2010-06-13 75 views
1

我试图通过单击按钮向后循环数组。向后循环通过NSArray

我目前的代码很接近,但并不完美。

- (void)viewDidLoad { 
self.imageNames = [NSArray arrayWithObjects:@"MyFirstImage", @"AnotherImage", nil]; 
currentImageIndex = 0; 
[super viewDidLoad]; 
} 

...是什么在起作用:

- (IBAction)change { 
UIImage* imageToShow = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[imageNames objectAtIndex:currentImageIndex] ofType:@"png"]; 
currentImageIndex++; 
if (currentImageIndex >= imageNames.count) { 
    currentImageIndex = 0; 
} 
} 

...,什么是不工作:

- (IBAction)changeBack { 
UIImage* imageToShow = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[imageNames objectAtIndex:currentImageIndex] ofType:@"png"]; 
currentImageIndex--; 
if (currentImageIndex >= imageNames.count) { 
    currentImageIndex = 0; 
} 
} 

任何帮助,很高兴地感谢!

谢谢!

回答

1

您需要先更改索引,然后获取图像。当退步需要索引重置为最大值(计数1)当你去否定:

- (IBAction)changeBack { 
    currentImageIndex--; 
    if (currentImageIndex < 0) { // was first image 
     currentImageIndex = imageNames.count-1; // last image 
    } 

    UIImage* imageToShow = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[imageNames objectAtIndex:currentImageIndex] ofType:@"png"]; 
} 

向前移动到下一个图像:

- (IBAction)change { 
    currentImageIndex++; 
    if (currentImageIndex >= imageNames.count) { // was last image 
     currentImageIndex = 0; // back to first image 
    } 

    UIImage* imageToShow = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[imageNames objectAtIndex:currentImageIndex] ofType:@"png"]; 
} 
+0

谢谢!这就像一个魅力。 – dot 2010-06-14 23:34:53

0

也许在changeBack方法,你应该改变这行代码显示如下:

if (currentImageIndex <= 0) {
currentImageIndex = imageNames.count;
}

(当用户获取过去的第一个图像这是假设,他们回到过去一个)

+0

这崩溃的应用程序。很奇怪。 – dot 2010-06-13 02:55:48