我正在尝试将数组项作为对象名。
我有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
非常感谢您的帮助。
答案 0 :(得分:1)
将图像视图对象直接保存到数组中会更容易,而不是尝试使用字符串检索它们。
如果要使用字符串作为键来查找对象,请将它们存储在字典中。
但是,在您的情况下,您有一个数字索引。只需将UIImageView对象直接保存到数组中即可。这不会复制对象 - 它只是在数组中保存对它们的引用。
答案 1 :(得分:0)
#import <objc/runtime.h>
...
UIImageView *imageView = nil;
NSString *name = [array objectAtIndex:[sender tag]];
object_getInstanceVariable(self, [name UTF8String], (void**)&imageView);