我有一个值得拥有的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)
}
}
答案 0 :(得分:1)
我认为你误解了使用viewWithTag(_:)的目的:
返回标记与指定值匹配的视图。
不创建新实例,它用于根据标记值获取特定的已识别视图。
如果我没有误会,你想创建新的实例,提到:
我想创建一个创建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
变量的当前值。