var replycount = replies.count
var startingTag = 10
for subview in self.personView.subviews {
if replycount > 0 {
subview.viewWithTag(startingTag)?.backgroundColor = .green
replycount = replycount - 1
startingTag = startingTag + 1
}
}
}我正在从服务器上提取一个数字(回复计数),并试图通过在屏幕上着色一些视图来表示这个数字。我在底部有10个气泡,如果回复数是4,从左边开始,我希望其中的4个气泡有一个绿色的背景色,其余的保持默认的黑色。
我试图用上面的代码获取回复计数,这是我正在成功完成的,我的第一个气泡从标签10开始,上升到19,如果回复计数超过0,意味着有一个回复,我想取第一个10的标签,绿色,然后转到下一个标签11,减去回复计数,然后继续运行,直到没有更多的回复。
下面的代码唯一起作用的是,如果我注释掉
replycount = replycount - 1并将viewWithTag(startingTag)更改为viewWithTag(10),并在数字中进行硬编码。如果这两件事都没有完成,视图的颜色就不会改变。
有没有更好的方法来做这件事,或者我为什么会遇到这个问题?
发布于 2016-11-30 19:42:14
跳过子视图的循环,只执行self.view.viewWithTag吗?虽然我只是假设所有的气泡都在同一个视图中,而不是在不同的子视图中。
虽然为了清楚起见,我可能会这样写它:
var replycount = replies.count
for tag in 10 ..< (10 + replycount) {
self.view.viewWithTag(tag)?.backgroundColor = .green
}https://stackoverflow.com/questions/40896709
复制相似问题