2012-04-28 56 views
0

我正在嘗試數組項目作爲對象名稱。如何使用plist NSString項目作爲UIImageView對象名稱

我有5個UIImageView旗下成立:

@interface miniTestViewController : UIViewController { 

    NSArray *array; 

    IBOutlet UIImageView *sun; 
    IBOutlet UIImageView *moon; 
    IBOutlet UIImageView *rain; 
    IBOutlet UIImageView *snow; 
    IBOutlet UIImageView *hail; 
} 

-(IBAction)fadeChosenImage:(id)sender; 

我的plist包含圖像名稱的數組:太陽,月亮,雨,雪,冰雹

在.M VDL存根,這plist中被讀入NSArray *array

-(IBAction)fadeChosenImage:(id)sender{ 

    NSString *image = [[NSString alloc] init]; 
    image= nil; 

    switch ([sender tag]) { 
     case 0: 
      image = [array objectAtIndex:[sender tag]]; 
      break; 
     case 1: 
      image = [array objectAtIndex:[sender tag]]; 
      break; 
     case 2: 
      image = [array objectAtIndex:[sender tag]]; 
      break; 
     case 3: 
      image = [array objectAtIndex:[sender tag]]; 
      break; 
     case 4: 
      image = [array objectAtIndex:[sender tag]]; 
      break; 
     default: 
      break; 
    } 

我需要使用NSStringUIImageView對象名稱,像這樣:

一個UIButton標籤索引選擇對象

[[array objectAtIndex:[sender tag]] setAlpha:0]; 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:6.0]; 
[[array objectAtIndex:[sender tag]] setAlpha:1]; 

但到目前爲止objectAtIndex返回NSString這不響應setAlpha消息。

是否可以轉換/包裝/投/使用NSString來的UIImageVIew

對象名稱非常感謝您的任何幫助。

回答

1

這將是更容易圖像視圖對象直接保存到陣列中,而不是試圖用一個字符串來檢索。

如果要使用字符串作爲關鍵字查找對象,請將它們存儲在字典中。

Hoever,就你而言,你有一個數字索引。只需將UIImageView對象直接保存到數組中即可。這不會複製這些對象 - 它只是將引用保存到數組中。 Gack。

0

嘗試object_getInstanceVariable

#import <objc/runtime.h> 

... 

UIImageView *imageView = nil; 
NSString *name = [array objectAtIndex:[sender tag]]; 
object_getInstanceVariable(self, [name UTF8String], (void**)&imageView); 
+0

Gack。真?使用底層的Objective C運行庫作爲新手的解決方案?!?文檔說該方法返回「指向Ivar數據結構的指針,該數據結構定義了由名稱指定的實例變量的類型和名稱」。假設實例變量包含一個對象,它與指向對象的高級指針是一樣的嗎?文檔說iVar是「一個代表實例變量的不透明類型」。 – 2012-04-28 23:28:56

相關問題