2012-01-07 58 views
0

我創建了一個圖像數組。我想能夠創建一個以前的圖像按鈕,但有麻煩。這是我以前的按鈕代碼:幻燈片放映需要上一個圖像按鈕的多個圖像。

-(IBAction)changeImage:(id)sender 
{ 
    int ptr = 0; 

    if (ptr <= 5) 
    { 
     ptr--; 
     ptr = 5; 
     [imageView setImage:[images objectAtIndex:ptr]]; 
    } 

    NSArray *images = [[NSArray alloc] initWithObjects:@"Americans.png",@"Approach.png",@"Arianny.png",@"Atoms.png",@"Australia.png",@"Average.png",nil]; 

    [imageView setImage:[UIImage imageNamed:[images objectAtIndex:ptr]]]; 
} 
+0

以前的圖像應該是1?它是5嗎?你用很長的路實現了你的邏輯。 – AAV 2012-01-07 03:27:13

+0

我以數字爲例。我有一組圖像設置爲隨機顯示(沒有給定的順序)。我想這個按鈕能夠顯示目前正在顯示(在某種意義上可以追溯到) – 2012-01-07 03:33:22

回答

0

我不知道你展示的代碼(changeImage)應該是你要使用以前的圖像的代碼,或者它只是你已經打算碼爲了一些其他目的來改變圖像。但是這段代碼有一些錯誤的地方。

變量ptr的作用域只在方法塊內,因此它將始終設置爲0,然後遞減,然後設置爲5.因此,當changImage方法時,您總是會最終在索引5處顯示圖像執行。另外,如果你有兩個引用圖像數組的方法,那麼這個數組必須是一個ivar,你可以在初始化代碼中設置它。

從我可以告訴你的問題,你想要做的一件事是將圖像更改爲數組images中圖像範圍內的另一個隨機圖像。你想要做的第二件事是顯示之前顯示的圖像。

所以,你需要兩種方法。一種方法會在圖像陣列的有效索引範圍內生成一個隨機索引。另一種方法顯示之前顯示的圖像。

所以,你需要設置包含顯示的最後圖像的索引伊娃。第一種方法必須在生成新的隨機索引之前立即替換該ivar中的值。第二個(showPrevious)方法將使用此'lastIndex'ivar的值來選擇要返回的索引。

如果你想回到以前的圖像的不止一個步驟,並且圖像索引是隨機生成的,那麼你就需要一個數組記住生成的隨機索引的順序。稍微複雜一點,根據你所提出的問題,你可能會先保持簡單,然後向後退一步。此外,您不顯示如何生成隨機索引。如果您尚未完成該任務,則需要編寫該代碼。

+0

u能提供某種形式的我怎麼會去前面的圖像代碼前面的圖像?因爲這是我有麻煩這樣做。 – 2012-01-08 04:55:49