Swift:简单 - 如何动态引用按钮的名称?

时间:2015-06-04 18:26:41

标签: swift

我一直在寻找这个混帐问题超过一个小时,这很简单!

我有9张图片,我想在一个函数中引用它们中的任何一个。它们都被命名为“img1”“img2”等。它们也与IBOutlets的代码相关联。

Func changeImage(imgNumber: Int){

imageName = "img" + String(imgNumber)
self.imageName.image = UIImage( named: "smiley.jpg") }

我知道我可以通过说“self.img1.image”来引用实际对象,而不是imageName变量,但这不允许我用函数动态地改变任何图像。

请帮忙!

2 个答案:

答案 0 :(得分:0)

将图片放入Asset Catalog

(您可以通过新文件创建一个...> iOS资源>资产目录)。

在资产目录中,为您的图像命名,如image1,image2,image3等。

UIImage(named: "image1")会在资产目录中找到图片。

使用Asset Catalog的好处是您可以轻松添加支持不同屏幕分辨率的图像。

(可选)手动加载它们,并将它们放入数组中并按索引访问(如果存在要使用的逻辑顺序)。

答案 1 :(得分:0)

您应该将它们放入保留订单的集合(例如,在viewDidLoad中),即

var images = [self.img1, self.img2, self.img3]

并使用索引访问指定的按钮

images[idx].image = UIImage(named: "smiley.jpg")

如果您需要更多动态订单,可以使用标记并遍历子视图以查找指定的视图。我不建议这样做,因为调试很麻烦。

你可以使用插座收藏品,但根据我的理解,他们不会保留订单。这意味着您必须找到另一种方法来对按钮进行排序(x坐标,y坐标或标记)。