我已经加载了一个数组:
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]];
会工作,但我得到的只是十六进制代码。我有一个按钮可以很好地滚动图像。但是,当我尝试显示图像名称时,我得到的就是我认为的名称所在的地址。
答案 0 :(得分:2)
图像的文件名未存储在UIImage对象中。 UIImage类中没有这样的属性。你必须自己存储这些名字。也许您可以将文件名存储在一个数组中,并使用此数组从文件中检索图像,然后再查找图像文件名:
imageFileNames = [[NSArray alloc] initWithObjects:
@"mystery_01 320x460",
@"mystery_02 320x460",
@"mystery_03 320x460",
@"mystery_04 320x460",
@"mystery_05 320x460",
nil];
检索图像(如果您愿意,可以使用for-in循环):
bgImages = [[NSArray alloc] initWithObjects:
[UIImage imageNamed:[imageFileNames objectAtIndex:0]],
[UIImage imageNamed:[imageFileNames objectAtIndex:1]],
[UIImage imageNamed:[imageFileNames objectAtIndex:2]],
[UIImage imageNamed:[imageFileNames objectAtIndex:3]],
[UIImage imageNamed:[imageFileNames objectAtIndex:4]],
nil];
从文件名数组中获取文件名:
mainLabel.text = [NSString stringWithFormat:@"bgImages= %@",[imageFileNames objectAtIndex:currentBackground]];
答案 1 :(得分:0)
有效地使用字符串格式的%@
只能调用对象的description
方法。您看到的十六进制值只是对象指针的值 - 这是NSObject的description
方法的默认实现。
请注意,对于NSString对象,description
方法返回...您猜对了 - NSString对象本身。
在您的情况下,要显示图像名称,您必须保留它们,因为看起来UIImage的description
不会返回图像名称。
您还可以创建一个记住名称的UIImage子类,但不确定它是否值得麻烦。