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个气泡,如果replycount是4,从左边开始我想要4个气泡有绿色背景颜色,剩下的就是它们的默认黑色。
我正在尝试使用上面的代码来获取我正在成功完成的回复计数,我的第一个气泡以10的标签开始并且上升到19,如果回复计数超过0,意思是有回复,我想要取第一个标签10,使其变为绿色,然后转到下一个标签11,减去回复计数,并继续前进,直到没有更多的回复。
以下代码的唯一时间是我注释掉
replycount = replycount - 1
并将viewWithTag(startingTag)更改为viewWithTag(10)和数字中的硬编码。如果未完成这两件事中的任何一件,则视图的颜色不会改变。
有没有更好的方法来做到这一点,或者为什么我遇到这个问题?
答案 0 :(得分:1)
跳过子视图循环,然后执行self.view.viewWithTag
?虽然我只假设所有气泡都在同一个视图中,而不是每个气泡都在不同的子视图中。
虽然为了清楚起见,我可能会写这样的东西:
var replycount = replies.count
for tag in 10 ..< (10 + replycount) {
self.view.viewWithTag(tag)?.backgroundColor = .green
}