遍历子视图 swift / ios

Looping through subviews swift / ios

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

}
   }
    }

我正在从服务器 (replycount) 中提取一个数字,并尝试通过在屏幕上为某些视图着色来表示该数字。我在底部有 10 个气泡,如果 replycount 是 4,从左边开始,我希望其中 4 个气泡具有绿色背景颜色,其余的保持默认黑色。

我想用上面的代码做的是获取我正在成功完成的回复计数,我的第一个气泡从标签 10 开始,上升到 19,如果回复计数是多于 0,表示有回复,我想取 10 的第一个标签,将其变为绿色,然后转到下一个 11 的标签,从回复计数中减去,继续进行直到没有更多回复。

只有在我注释掉

时,下面的代码才有效
replycount = replycount - 1

并将 viewWithTag(startingTag) 更改为 viewWithTag(10) 并在数字中进行硬编码。如果这两件事中的任何一件都没有完成,视图的颜色就不会改变。

有没有更好的方法来做到这一点,或者有什么想法让我 运行 陷入这个问题?

跳过子视图的循环,只做 self.view.viewWithTag?尽管我只是假设所有气泡都在同一个视图中,而不是每个气泡都在不同的子视图中。

尽管为了清楚起见,我可能会这样写:

var replycount = replies.count

for tag in 10 ..< (10 + replycount) {
  self.view.viewWithTag(tag)?.backgroundColor = .green
}