在语句中使用变量来引用存储在UIImageView中的图像

时间:2009-08-27 15:36:26

标签: iphone variables reference uiimageview

更新向下滚动以查看更清楚地重新询问的问题.... 如果我有一个存储在变量中的特定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。

谢谢!

1 个答案:

答案 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并只更改其中的图像会不会更好?