使用标记创建UIImageView。斯威夫特3

时间:2017-03-19 21:24:31

标签: ios swift swift3 uiimageview

我有一个值得拥有的int。 我想创建一个循环,用于创建带有连续标签的UIImageViews。

我的代码:

var n:Int = 1
 if arrayOfEmojis.count != 0 {
        for emoji in arrayOfEmojis {

                let emojiView  = self.view.viewWithTag(n) as! UIImageView
                emojiView.image = emoji
                 ...

}

但是没有创建emojiView。 当我使用"如果让emojiView ="它也没有创建。 我使用" viewWithTag(n)"功能不对?

_______编辑_________

使用.viewWithTag()错误,只需指定一个带有.tag属性的标记。 但是,现在,我想使用已分配的标记获取该视图。 我想现在我可以使用.viewWithTag() func? 我打电话给unexpectedly found nil...: (n用于创建imageViews的上一个循环中,并且已更新为已创建的imageView数量:

if arrayOfEmojis.count != 0 {
        for j in 1...n {

            var view1 = self.view.viewWithTag(j) as! UIImageView
            arrayOfEmojiViews.append(view1)
        }
    }

1 个答案:

答案 0 :(得分:1)

我认为你误解了使用view​With​Tag(_:​)的目的:

  

返回标记与指定值匹配的视图

创建新实例,它用于根据标记值获取特定的已识别视图。

如果我没有误会,你想创建新的实例,提到:

  

我想创建一个创建UIImageViews 的循环   连续标签*。

它应该类似于:

var n:Int = 1
var currentTag = 0
if arrayOfEmojis.count != 0 {
    for emoji in arrayOfEmojis {

        let emojiView = UIImageView(image: emoji)
        emojiView.tag = currentTag
        currentTag += 1
        // don't forget to set the frame for the emojiView
        ...
    }
}

对于每次迭代,将使用UIImageView初始化程序创建init(image:​)的新实例,并设置其tag值"连续"基于currentTag变量的当前值。