如何使用plist NSString项作为UIImageView对象名

时间:2012-04-28 02:15:42

标签: iphone ios reflection 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

UIButton标记选择索引处的对象:

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

我需要使用NSString作为UIImageView对象名称,如下所示:

[[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

的对象名称

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

将图像视图对象直接保存到数组中会更容易,而不是尝试使用字符串检索它们。

如果要使用字符串作为键来查找对象,请将它们存储在字典中。

但是,在您的情况下,您有一个数字索引。只需将UIImageView对象直接保存到数组中即可。这不会复制对象 - 它只是在数组中保存对它们的引用。

答案 1 :(得分:0)

尝试object_getInstanceVariable

#import <objc/runtime.h>

...

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