2016-11-30 84 views
0
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个气泡具有绿色背景色,其他气泡保持其默认黑色。通过子视图循环swift/ios

我想要做的与上面的代码是抢我的回应计数,我成功地做到了,我的第一个泡沫开始于10的标签,并上升到19,如果回复计数更多这意味着有一个回复,我想要采取10的第一个标记,使其绿色,然后移动到下一个标记11,减去回复计数,并继续前进,直到没有更多的回复。

下面的代码工作的唯一情况是,如果我注释掉

replycount = replycount - 1 

,改变viewWithTag(startingTag)到viewWithTag(10)和数量进行硬编码。如果任一的T软管两件事情没做完,视图的颜色没有改变。

有没有更好的方法来做到这一点,或有什么想法,为什么我遇到这个问题?

回答

1

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

虽然我可能会写它是这样为了清晰:

var replycount = replies.count 

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

所以要简单得多。非常感谢! – user6820041