Iphone 如何将plist NSString项用作UIImageView对象名称
我正在尝试将数组项用作对象名 我已设置了5个Iphone 如何将plist NSString项用作UIImageView对象名称,iphone,ios,reflection,nsstring,uiimageview,Iphone,Ios,Reflection,Nsstring,Uiimageview,我正在尝试将数组项用作对象名 我已设置了5个UIImageViews: @interface miniTestViewController : UIViewController { NSArray *array; IBOutlet UIImageView *sun; IBOutlet UIImageView *moon; IBOutlet UIImageView *rain; IBOutlet UIImageView *snow; IBOutl
UIImageView
s:
@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*数组中
ui按钮
标记选择索引处的对象:
-(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
返回一个不响应setAlpha
消息的NSString
是否可以将NSString
转换/包装/转换/使用为UIImageVIew
非常感谢您的帮助。试试:
#导入
...
UIImageView*imageView=nil;
NSString*name=[array objectAtIndex:[sender tag]];
对象_getInstanceVariable(self,[name UTF8String],(void**)和imageView);
直接将图像视图对象保存到数组中要比尝试使用字符串检索它们容易得多
如果要使用字符串作为键查找对象,请将其存储在字典中
Hoever,在你的例子中,你有一个数字索引。只需将UIImageView对象直接保存到数组中。这不会复制对象-它只是将对它们的引用保存在数组中 加克。真正地使用低级Objective C运行时作为新手的解决方案?!?文档说该方法返回“一个指向Ivar数据结构的指针,该数据结构定义了由name指定的实例变量的类型和名称”。假设实例变量包含一个对象,那么这与指向对象的高级指针相同吗?文档称iVar是“一种表示实例变量的不透明类型”
#import <objc/runtime.h>
...
UIImageView *imageView = nil;
NSString *name = [array objectAtIndex:[sender tag]];
object_getInstanceVariable(self, [name UTF8String], (void**)&imageView);