更新向下滚动以查看更清楚地重新询问的问题.... 如果我有一个存储在变量中的特定UIImageView(IBOutlet)的名称,我该如何使用它来更改显示的图像。我尝试过这个,但它不起作用。
我还是iphone编程的新手,所以任何帮助都会受到赞赏。
NSString *TmpImage = @"0.png";
NSString *Tst = @"si1_1_2";
TmpImage = @"1.png";
UIImage *sampleimage = [[UIImage imageNamed:TmpImage] retain];
((UIImageView *) (Tst)).image = sampleimage; // This is the line in question
[sampleimage release];
重述:
我屏幕上有一堆图像...... UIImageView * s1,* s2,* s3等达到* s10
现在假设我想将每个显示的图像更新为同一图像
而不是做
s1.image = sampleimage;
s2.image = sampleimage;
:
s10.image = sampleimage;
我怎么能写一个for循环从1到10然后使用
循环var作为更新图像的行的一部分
像这样的东西。
for(i = 1; i < - 10; ++ i)
s(i).image = sample; //我知道这不起作用
基本问题是如何将变量合并为语句的一部分来访问图像?不要挂在我的榜样上。主要问题是如何使用变量作为访问某些元素/对象的一部分。
底线...如果我可以将UIImageView的名称构建到NSString对象中,那么我该如何使用该NSString对象来操作UIImageView。
谢谢!
答案 0 :(得分:1)
唉!您的问题:
((UIImageView *) (Tst)).image = sampleimage;
将字符串指针转换为UIImageView指针 - 你基本上是说你指向字符串的指针实际上是指向UIImageView的指针!它将编译(因为编译器会愉快地接受你的断言),但当然会在运行时崩溃。
您需要声明UIImageView类型的变量。然后,这可以保存您想要设置图像的任何视图。所以你的代码可能如下所示:
NSString *TmpImage = @"0.png";
UIImageView *myImageView;
If (someCondition == YES) {
myImageView = si1_1_2; //Assuming this is the name of your UIImageView
} else {
myImageView = si1_1_3; //etc
}
UIImage *sampleimage = [UIImage imageNamed:TmpImage]; //no need to retain it
myImageView.image = sampleImage;
希望这是有道理的!
编辑:我应该补充一下,你为什么要尝试多个UIImageViews?因为UIImageView的图像可以随时更改(实际上可以容纳很多),仅仅有一个UIImageView并只更改其中的图像会不会更好?