2012-02-06 50 views
-1

我已加載的數組:顯示數組內容

currentBackground=4; 
bgImages = [[NSArray alloc] initWithObjects: 
      [UIImage imageNamed:@"mystery_01 320x460"], 
      [UIImage imageNamed:@"mystery_02 320x460"], 
      [UIImage imageNamed:@"mystery_03 320x460"], 
      [UIImage imageNamed:@"mystery_04 320x460"], 
      [UIImage imageNamed:@"mystery_05 320x460"], 
      nil]; 

現在我想在當前正在顯示的圖像的文件名的標籤顯示。我想:

mainLabel.text = [NSString stringWithFormat:@"bgImages= %@",[bgImages objectAtIndex:currentBackground]]; 

會工作,但我得到的是十六進制代碼。我有一個很好地滾動圖像的按鈕。但是,當我嘗試顯示圖像名稱時,我所得到的就是我認爲是名稱所在的地址。

想法。

+1

您使用的是什麼技術?適當地重新標記將有助於將問題提供給正確的受衆,並得出更好的答案。 – 2012-02-06 18:10:48

回答

1

當你這樣做 - [bgImages objectAtIndex:currentBackground] - 你得到一個UIImage的實例。當你做你的stringWithFormat,你是對的,它只是打印圖像的地址,沒有更多。

不幸的是有沒有辦法讓「名」的圖像背出UIImage實例,所以你可能會不得不做這樣的事情:

currentBackground=4; 
bgImages = [[NSArray alloc] initWithObjects: 
      [UIImage imageNamed:@"mystery_01 320x460"], 
      [UIImage imageNamed:@"mystery_02 320x460"], 
      [UIImage imageNamed:@"mystery_03 320x460"], 
      [UIImage imageNamed:@"mystery_04 320x460"], 
      [UIImage imageNamed:@"mystery_05 320x460"], 
      nil]; 
bgImageNames = [[NSArray alloc] initWithObjects: 
       @"mystery_01 320x460", 
       @"mystery_02 320x460", 
       @"mystery_03 320x460", 
       @"mystery_04 320x460", 
       @"mystery_05 320x460", 
       nil]; 

然後執行:

mainLabel.text = [NSString stringWithFormat:@"bgImages= %@",[bgImageNames objectAtIndex:currentBackground]]; 

或者包裹bgImages排列了一下的創建,你甚至可以聰明,這樣做:

currentBackground=4; 
bgImageNames = [[NSArray alloc] initWithObjects: 
       @"mystery_01 320x460", 
       @"mystery_02 320x460", 
       @"mystery_03 320x460", 
       @"mystery_04 320x460", 
       @"mystery_05 320x460", 
       nil]; 
NSMutableArray *newBgImages = [NSMutableArray arrayWithCapacity:0]; 
for (NSString *image in bgImageNames) { 
    [newBgImages addObject:[UIImage imageNamed:image]]; 
} 
bgImages = [NSArray arrayWithArray:newBgImages]; 
+0

謝謝馬特,這非常有道理。 – Fred 2012-02-07 00:15:56