遍历子视图 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
}
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
}